React Native运行iOS端提示Invalid Podfile报错如何解决
两个报错同源,都是React Native iOS端原生模块自动链接逻辑失效导致:在Xcode中删除项目文件夹的操作,大概率破坏了项目依赖关联、或是误删了自动链接所需的配置引用,导致Podfile里的use_native_modules!执行时读取不到配置对象,触发空值读取属性的错误。
- 第一步:全量清理损坏的缓存和残留依赖
回到项目根目录,依次执行以下命令:
# 清理JS侧依赖和锁文件 rm -rf node_modules yarn.lock package-lock.json # 清理iOS侧pod依赖、缓存和编译产物 cd ios rm -rf Pods Podfile.lock build cd ..
第二步:重新安装JS侧依赖
根据你用的包管理器执行对应安装命令:用npm就执行npm install,用yarn就执行yarn install。
注意:必须等这一步执行完无任何报错再走后续流程,如果安装阶段出现权限、镜像源、包版本冲突的问题,先解决对应问题,否则iOS侧始终读不到自动链接的配置。第三步:校验Podfile顶部配置
打开ios目录下的Podfile文件,检查文件最顶部是否存在以下两行自动链接的引入配置,0.60以上版本的React Native项目这两行是必需的,缺失就直接补上,注意相对路径要和你项目的实际目录结构匹配:
require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
第四步:重新安装iOS侧Pod依赖
进入ios目录执行pod install --repo-update,安装完成后回到项目根目录,执行npx react-native clean --include ios清理Xcode侧残留的编译缓存。第五步:验证启动
回到项目根目录执行npx react-native run-ios,正常即可在iOS模拟器上启动应用。
特殊情况处理:如果以上步骤执行完仍报相同错误,说明你在Xcode删除文件夹时选了「Move to Trash」而非「Remove Reference」,误删了ios目录下的
.xcworkspace文件、或是.xcodeproj内的原生项目配置。这种情况可以执行npx react-native upgrade --legacy true重新生成iOS侧的标准原生配置文件,执行前务必备份你自定义修改过的原生内容(比如权限声明、启动图、自定义原生代码),避免被默认配置覆盖。
内容的提问来源于stack exchange,提问作者Karan

