React Native - iOS - 无效的`Podfile`文件:nil:NilClass的未定义方法`[]'
Posted
技术标签:
【中文标题】React Native - iOS - 无效的`Podfile`文件:nil:NilClass的未定义方法`[]\'【英文标题】:React Native - iOS - Invalid `Podfile` file: undefined method `[]' for nil:NilClassReact Native - iOS - 无效的`Podfile`文件:nil:NilClass的未定义方法`[]' 【发布时间】:2019-10-16 23:41:31 【问题描述】:我刚刚开始使用 React Native。我正在关注官方文档中的 React Native CLI 快速入门。这也意味着我是最新的 React Native 版本 0.61.2。
从那以后,我做了一些基本的 UI,在 iPhone 模拟器中检查结果。它在运行react-native run-ios
时有效,并没有真正接触 ios/Podfile 太多。
我的问题是在我的 ios/ 文件夹中运行 pod install 总是会导致错误!现在这成为一个问题,我需要安装其他软件包。但是默认 Podfile 已经失败了!
错误信息:
[!] Invalid `Podfile` file: undefined method `[]' for nil:NilClass.
# from /Users/marcel/Projekte/WerBinIch/ios/Podfile:43
# -------------------------------------------
#
> use_native_modules!
# end
# -------------------------------------------
ios/Podfile
platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
target 'WerBinIch' do
# Pods for WerBinIch
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/'
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
target 'WerBinIchTests' do
inherit! :search_paths
# Pods for testing
end
use_native_modules!
end
我不知道如何处理这个!我不知道 Podfile 和带有 xcode 文件的东西是如何工作的!我试图删除完成重置的文件夹。不仅如此,我不知道错误消息可能意味着什么。
【问题讨论】:
react-native ios Podfile issue with "use_native_modules!"的可能重复 谢谢!该线程上的答案有所帮助。我需要安装 npm 包@react-native-community/cli-platform-ios。 【参考方案1】:当您 cd 到 ios 文件夹并运行“pod install”时会发生此错误 并且是因为您添加了一个新的反应原生模块
npm -i 包
而不是使用纱线
纱线添加包
要解决这个问题,只要进入 package.json 所在的 react native 项目主文件夹,再次运行下面的命令
纱线缓存清理
纱线添加包装
然后尝试cd到ios文件夹并运行“pod install”,就不会再出现错误了。希望这可以帮助同样面临同样问题的其他人。
【讨论】:
你是救世主。 我没有使用yarn,只是npm @AbdulBasit 抱歉迟到了。您应该删除整个 node_modules、ios 文件夹中的 Pods 文件夹、Podfile.lock 并执行“yarn”,然后执行“cd ios”,然后执行“pod install”。这就像清理所有东西并从头开始重新安装所有模块和 Pod。确保不要混合使用 yarn 和 npm 命令。只用纱线,更简单,省心。【参考方案2】:这个答案很好地解决了我的问题:
react-native ios Podfile issue with "use_native_modules!"
正确答案如下:
1 - 您的 POD 文件应在顶部包含此行
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
2 - 确保您的 package.json 和 node_module 文件夹已安装此模块
cli-platform-ios/native_modules
3 - 如果你在运行yarn install
后没有找到 - 意味着你的机器中有旧的缓存 node_modules,你需要在重新安装包之前清理它。
4 - 清理缓存
$ yarn cache clean
5 - 确保你有这个文件 react-native.config.js
并且它的配置是有效的 - 并且它没有不存在的 NPM 包 - 这一步是最后也是错误的原因
我的react-native.config.js
示例
module.exports =
project:
ios: ,
android: ,
,
assets: ['./assets/fonts/']
dependencies: , // make sure this deps are all valid installed packages or empty if you don't need it
;
6 - 安装节点包yarn install
,您的 pod 现在应该可以工作了!
$ pod install --repo-update
编码愉快!
【讨论】:
【参考方案3】: 添加"@react-native-community/cli-platform-ios": "3.0.0"
进入你的 package.json 文件并在你的主目录中运行 npm install
然后cd ios
并运行pod install
【讨论】:
不知道你为什么被否决,这解决了我的问题。当然,我现在可能会遇到其他问题,但其他答案不起作用。【参考方案4】:试了半天,最后都换了
react-native
@react-native-community
从另一个 RN 0.63 项目到 node_modules 的文件夹,它已经解决了。 也许我的缓存没有被正确删除或替换。
【讨论】:
以上是关于React Native - iOS - 无效的`Podfile`文件:nil:NilClass的未定义方法`[]'的主要内容,如果未能解决你的问题,请参考以下文章
有效登录后React Native iOS“Safari无法打开页面,因为地址无效”
React Native-iOS-无效的Podfile文件:nil:NilClass的未定义方法'[]'
从我的 react-native 应用程序调用 UPI 应用程序在 iOS 中有效,但在 Android 中无效
React Native PushNotificationIOS:CUICatalog:提供的资产名称无效:(null)
无效的 YGDirection 'row' 应该是以下之一:(inherit, ltr, rtl) - React Native