【发布时间】:2020-04-27 12:41:36
【问题描述】:
我有一个 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 时,都会出现错误
错误:捆绑失败:错误:无法解析模块json-rules-engine
在项目中找不到 json-rules-engine。
当我在 peerDependencies 中使用它时就是这种情况,如果我在依赖项中使用这个库,我不会收到任何错误。
请帮忙。
【问题讨论】:
-
您可以尝试使用 npm 包
babel-plugin-module-resolver添加 babel 别名,这样当 metro 去寻找 cutsom_library/json-schema-rules 时,它会在您的 react-native 应用程序中找到该包。跨度> -
我不知道我是否理解你所说的,但我已将我的自定义库包含在 metro.config.js 中以监视 extraNodemodules。这是文件:gist.github.com/ElavanResu/7c0c8a03a62c5ecba0b8247aec0dbd2d 但我认为,问题是,我在 custom_library 中有 json-schema-rules 作为 peerDependencies,当我执行 npm install 时,它不会安装 json-schema-rules。当我的应用项目在 custum_library 中查找额外的节点模块时,它注意到 json-schema-rules 正在用于 custom_library 的代码中,但它不在节点模块中
-
peerDependency 表示不会为该库安装它,但会从项目中询问将使用该库的项目。所以如果我理解正确,我认为你需要在你的应用程序中添加
json-schema-rules作为依赖项,这样当你添加库时,库会发现它已经为它安装了,希望对你有帮助
标签: react-native metro-bundler