Не в состоянии работать с зависимостью сверстников в реагировать родной - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть одно собственное приложение, в котором я использую библиотеку "json -schema-rules". Теперь я также создал одну библиотеку, которая используется в моем приложении-реактиве, например, «file: ../ custom_library» в пакете. json.

Теперь, чтобы разрешить конфликт версий, я решил использовать "json -schema-rules" в качестве зависимости от пира в моей пользовательской библиотеке. Итак, пакет. json похож на этот

пакет. json моего собственного реактивного приложения: { "dependencies": { "json-rules-engine": "^2.3.0", "custom_library": "file:../custom_library" } }

пакет. json моего custom_library: { "peerDependencies": { "json-schema-rules": "^2.3.0" } }

Теперь проблема заключается в том, что всякий раз, когда я использую metro bundler, я получаю ошибку: связывание не удается: Ошибка: невозможно разрешить модуль json-rules-engine json -rules-engine не может быть найден в проекте .

В этом случае, когда я использую его в peerDependencies, я не получаю никакой ошибки, если использую эту библиотеку в зависимостях.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете попробовать добавить псевдоним для модуля в конфигурации вашего проекта babel.

Это означает, что когда ваши пользовательские пакеты попытаются импортировать "json -rules-engine", он получит версию из основного приложения.

Первая установка 'babel-plugin-module -resolver 'затем настройте псевдоним в "module-resolver"

babel.config. js

const config = {
  presets: ["module:metro-react-native-babel-preset"],
  plugins: [
    [
      "module-resolver",
      {
        root: ["./src"],
        extensions: [".js", ".jsx", ".ios.js", ".android.js"], 
        alias: {
          "json-rules-engine": require.resolve("json-rules-engine") 
        }
      }
    ]
  ]
};
module.exports = config;

...