5

我收到一个错误:

模棱两可的解决方案:模块“.../myModule.js”试图要求“react-native”,但有几个文件提供了这个模块。您可以删除或修复它们:

.../MyProject/ios/Pods/React/package.json

.../MyProject/node_modules/react-native/package.json

我几乎可以肯定这是由于使用了 Podfiles,特别是当他们安装“React”文件夹时。但是,我必须使用 Podfiles 才能安装react-native-firebase. 话虽如此,当我删除 Pods 文件夹(ios/Pods/React)下的 React 文件夹时,我无法再使用react-native-firebase.

GitHub 上有一个修复程序,建议在 Podfile 中附加:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end
  end
end

但这对我不起作用。有没有人遇到过这个问题?

如果相关,这是我正在使用的 podfile:

platform :ios, '8.0'

target 'MyProject2' do
    pod 'Firebase/Core'
    pod 'Firebase/Database'
    pod 'Firebase/Messaging'

  pod 'RNSVG', :path => '../node_modules/react-native-svg'

  target 'MyProject2Tests' do
    inherit! :search_paths
    # Pods for testing
  end

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == "React"
        target.remove_from_project
      end
    end
  end

end

编辑:当我从 Podfile 中删除 'RNSVG' 时,我收到一条错误消息:“不变违规:'RNSVGPath' 的本机组件不存在”。我已经运行了 react-native 链接并按照手动安装的说明进行操作react-native-svg

4

4 回答 4

1

我必须手动将 React pod 链接到node_modules

pod 'React', :path => '../node_modules/react-native'

于 2018-09-12T22:32:08.073 回答
0

在使我的应用程序适用于 iOS 时,我刚刚完成了对这个问题的管理。

我使用了克里斯的解决方案,还......

匆忙的打包管理器正在从我的根node_modules文件夹和node_modules我的 Build 文件夹中的文件夹中查找我的模块实例。

rn-cli.config.js要解决这个问题,请在项目的根目录中创建一个名为的文件:

const blacklist = require('metro-config/src/defaults/blacklist');


module.exports = {
resolver: {
blacklistRE: blacklist([
                        /Build\/.*/,
                        ])
},
};
于 2019-01-17T09:33:44.587 回答
0

每当添加带有 React 依赖项的 Pod 时,似乎都会发生此问题。

一旦某些东西具有 react 依赖并且没有添加 React Pod,它通常会尝试安装它,在 CocoaPods (0.11) 上找到旧版本的 React。

为避免这种情况,您需要根据此处的 react-native 文档显式添加依赖项和所需的子依赖项:react-native cocoapods docs

例如,当我添加react-native-community/async-storage模块时,我必须将所有这些添加到我以前只有 AppCenter 和 Firebase 相关依赖项的 podfile 中:

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
# Add any other subspecs you want to use in your project
  ]
  # Explicitly include Yoga if you are using RN >= 0.42.0
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage'
于 2019-08-09T14:55:28.583 回答
-1

看一下react-native-svg,他们的 Podfile 将 React 指定为依赖项。为了简单起见,我建议您使用推荐的react-native link命令来安装这个库,而不是在 Podfile 中指定它。

删除后react-native-svg,您可能需要清除Podfile文件夹并重新运行pod install

于 2018-03-22T06:55:30.543 回答