如何防止react-native-device-info导致我的设置出现歧义?

时间:2018-10-10 09:44:23

标签: ios react-native cocoapods react-native-device-info

我在将react-native-device-info安装到现有的本地反应项目(使用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可以安装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 ```

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

1 个答案:

答案 0 :(得分:3)

事实证明,您可以链接到node_modules中的react-native,它提供了必要的依赖关系。默认情况下,在现有项目中未执行此操作,因此过程如下:

1)从“干净”开始(例如,没有react-native-device-info行为)。在此之前搞乱了,我还发现我必须清除node_modulesios/Pods目录,以清除旧版React包。

2)更新您的Podfile以链接到React(您还必须添加任何relevant subspecs和用于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

现在您应该已经可以正常运行了!