1

我有一个 react-native 应用程序,我在其中使用“json-schema-rules”库。现在我还创建了一个在我的 react-native 应用程序中使用的库,例如 package.json 中的“file:../custom_library”。

现在为了解决版本冲突,我决定在我的自定义库中使用“json-schema-rules”作为对等依赖项。所以,package.json 是这样的

我的 react-native 应用程序的 Package.json: { "dependencies": { "json-rules-engine": "^2.3.0", "custom_library": "file:../custom_library" } }

我的 custom_library 的 package.json:{ "peerDependencies": { "json-schema-rules": "^2.3.0" } }

现在的问题是,每当我使用 Metro bundler 时,我都会收到一个错误 error: bundling failed: Error: Unable to resolve module json-rules-engine json-rules-engine could not be found in the project.

当我在 peerDependencies 中使用它时就是这种情况,如果我在依赖项中使用这个库,我不会收到任何错误。

请帮忙。

4

1 回答 1

0

您可以尝试在项目的 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;

于 2020-04-29T05:22:45.180 回答