Есть несколько активных экземпляров mobx

С момента последнего обновления Mobx 3.6 до Mobx 4 мое приложение просто перестало работать. Я использую response-native, и я просто выполнил инструкции по переходу на новейшие функции, но мое приложение просто продолжает вылетать, отображая следующую ошибку:

[mobx] Активно несколько экземпляров mobx. Это может привести к неожиданным результатам: см. https://github.com/mobxjs/mobx/issues/1082, чтобы узнать подробности.

Щелкните здесь, чтобы просмотреть изображение ошибки

Магазин Mobx:

Я только что создал простой наблюдаемый объект со следующим кодом:

import React, { Component } from "react";

import { observable } from "mobx";

const ProductsStore = observable.object(
  {
    selectedProduct: null,
    products: [
      {
        id: 1,
        name: "NVIDIA 1050TI",
        desc: "4GB OC",
        model: "ASUS",
        price: 1050,
        quantity: 1
      },
      {
        id: 2,
        name: "NVIDIA 1060TI",
        desc: "6GB OC",
        model: "EVGA",
        price: 1050,
        quantity: 1
      },
      {
        id: 3,
        name: "NVIDIA 1070TI",
        desc: "8GB OC",
        model: "MSI",
        price: 1050,
        quantity: 1
      },
      {
        id: 4,
        name: "NVIDIA 1080TI",
        desc: "11GB OC",
        model: "FOUNDERS EDITION",
        price: 1050,
        quantity: 1
      }
    ]
  },
  { selectedProduct: observable, products: observable }
);

export { ProductsStore };

Но когда я пытаюсь импортировать этот файл, приложение вылетает из строя и отображает ошибку, о которой я упоминал ранее.

import { ProductsStore } from '@store'

Я пробовал без псевдонима, но вроде не работает.


person Lucas Dias    schedule 22.03.2018    source источник
comment
Краткое примечание: я пытался добавить как peerDependencies и даже в devDependencies, а не в dependencies. Затем переустановил пакеты, и ошибка не исчезла.   -  person Lucas Dias    schedule 22.03.2018
comment
Это проблема с настройкой проекта, поэтому публикация кода mobx не поможет. Проверьте, есть ли mobx только один раз в ваших node_modules tree -d | grep mobx, чтобы быстро проверить. Если он уникален, возможно, вы связали в свой проект пакеты, которые также содержат mobx.   -  person mweststrate    schedule 22.03.2018


Ответы (1)


Я решил проблему в чате с @mweststrate и выяснил, что в своем проекте я использую библиотеку, которая зависит от старой версии mobx.

Версии> 3.6, принимает только один экземпляр mobx.

Библиотека react-native-router-flux использует старую версию, из-за которой возникла эта проблема.

Обходной путь заключался в добавлении свойства resolutions в файл package.json и добавлении mobx и mobx-react к этому свойству.

  "resolutions": {
    "mobx": "^4.1.0",
    "mobx-react": "^5.0.0"
  },

Но свойство resolutions доступно только для yarn, не для npm. Это свойство перезаписывает старые упомянутые зависимости. Дополнительные вопросы читайте в документации.

Выборочное разрешение пряжи

Несколько экземпляров MobX в вашем приложении # 1082

person Lucas Dias    schedule 22.03.2018
comment
Моя версия 5.0.3, и у меня время от времени появляется ошибка в моей консоли. Думаю, это может быть связано с тем, что я использую рендеринг на стороне сервера (Next.js). - person kinger6621; 24.10.2018