我正在开发一个 React Native 应用程序,它包含一个自写的 React Native 模块作为本地 NPM 模块。
我的 NPM 模块以及包含该 NPM 模块的 React Native 应用程序都依赖于 React 和 React Native。
因此,metro bundler 提示命名冲突
,因为 NPM 包被包含了两次。
为了避免这种情况,我在自写的 NPM 模块中添加了 React 和 React Native 作为对等依赖。
但是,如果我这样做,metro bundler 会提示它无法解析模块“react”/模块“react”在我自己编写的 NPM 的 Haste 模块映射中不存在
包。
有什么建议吗?
最佳答案
听起来你只需要从你自己写的模块的 dependencies
中移动 react-native
(可能还有 react
)package.json
改为 peerDependencies
。
确保 react
和 react-native
在您的 app 包的
,你应该可以开始了。dependencies
中。 json
如果您的模块需要 react-native
外部 应用上下文,用于测试或构建,您可以将它添加到 devDependencies
中没有将其再次安装到您的主机应用程序中的风险。
peerDependencies
是一种表示您的模块需要与它一起安装的另一个模块的方式,但主机应用程序有责任拥有硬依赖性并指定它想要的版本。
关于ios - 如何解决 metro bundler 的 "dead lock"情况 - 提示命名冲突或无法解析模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839954/