ios - 如何解决 metro bundler 的 "dead lock"情况 - 提示命名冲突或无法解析模块

标签 ios react-native

我正在开发一个 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

确保 reactreact-native 在您的 app 包的 dependencies 中。 json,你应该可以开始了。

如果您的模块需要 react-native 外部 应用上下文,用于测试或构建,您可以将它添加到 devDependencies 中没有将其再次安装到您的主机应用程序中的风险。

peerDependencies 是一种表示您的模块需要与它一起安装的另一个模块的方式,但主机应用程序有责任拥有硬依赖性并指定它想要的版本。

关于ios - 如何解决 metro bundler 的 "dead lock"情况 - 提示命名冲突或无法解析模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839954/

相关文章:

ios - TableView在View中覆盖整个屏幕

reactjs - Reanimated 2 Hook 中依赖参数的更好用例是什么?

ios - 什么是默认线程

ios - "Glitch"在 UIView 介绍 CAAnimation 期间

ios - CTFontGetGlyphsForCharacters 总是返回 false

javascript - 在 TabNavigator 中 react 导航传递 Prop

javascript - React/Router/MemoryRouter - 如何传递历史属性并在子组件中使用 push()?

ios - UITextfield 如何制作边框半径并保持边框阴影也是半径

使用 React Native 进行音频流式传输

react-native - React Native StackNavigator 在 navigationOptions 覆盖新闻参数