2

我在安装react-native-device-info到现有的 react-native 项目时遇到了问题(使用创建create-react-native-app然后弹出)

我跑:

yarn add react-native-device-info yarn install react-native link react-native-device-info cd ios && pod install & cd ..

pod install installs RNDeviceInfo,但也React作为依赖项?

然后我yarn ios正常运行。

MetroBundler 失败并显示:

``` 此警告是由跨两个不同文件的具有相同名称的 @providesModule 声明引起的。加载依赖图,完成。错误:捆绑失败:不明确的解决方案:模块/Users/thomasclarke/dev/mobile-notifications-native/index.js尝试要求react-native,但有几个文件提供此模块。您可以删除或修复它们:

  • /Users/thomasclarke/dev/mobile-notifications-native/ios/Pods/React/package.json
  • /Users/thomasclarke/dev/mobile-notifications-native/node_modules/react-native/package.json ```

我提出了一个错误报告,因为这显然是不可接受的行为,但这是我可以通过我的设置解决的问题吗?

4

1 回答 1

3

事实证明,您可以链接到 node_modules 中的 react-native,它提供了必要的依赖项。在现有项目中默认情况下没有这样做,所以这里是过程:

1)从“干净”开始(例如没有react-native-device-info行为)。在此之前搞砸了,我还发现我必须清除我的目录node_modules和我的ios/Pods目录才能清除遗留的 React 包。

2)更新您的 Podfile 以链接到 React(您还必须添加任何相关的子规范和一个单独的 Yoga pod)

以下是要添加到 podfile 的行: pod 'React', :path => '../node_modules/react-native', :subspecs => [ 'DevSupport', 'Core', 'RCTAnimation', 'RCTImage', 'RCTLinkingIOS', 'RCTSettings', 'RCTText' ] pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

3)然后运行react-native link react-native-device-info

这会将 react-native-device-info 添加到您的 Podfile(以及 android 设置)

pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'

4)正常安装一切: yarn install cd ios pod install

你现在应该有一个正常运行的构建!

于 2018-10-12T09:11:23.153 回答