升级React Native从0.59到0.64.2时执行pod install报错:No such file or directory @ rb_sysopen
解决React Native 0.64升级后pod install的Errno::ENOENT报错
我之前升级RN版本的时候也碰到过几乎一模一样的问题,结合你的报错信息和Podfile配置来看,核心问题在于React Native 0.60+版本已经全面采用自动链接机制和全新的Podfile结构,而你还在沿用0.59时代手动引入RN核心依赖的方式,再加上升级后文件路径的变化,导致CocoaPods找不到指定的文件。下面是具体的解决步骤:
步骤1:清理旧的CocoaPods残留
首先彻底清空旧的Pods相关文件,避免残留影响新的安装:
# 进入ios目录 cd ios # 移除Pods集成 pod deintegrate # 删除锁文件和Pods目录 rm -rf Podfile.lock Pods # 清理CocoaPods缓存 rm -rf ~/Library/Caches/CocoaPods # 清理iOS build目录 rm -rf ../ios/build
步骤2:替换为RN 0.64标准结构的Podfile
RN 0.64不再需要手动引入React、yoga、Folly等核心依赖,而是通过官方提供的宏来自动处理。同时要注意iOS最低版本要求(RN 0.64最低支持iOS 10.0)。修改后的Podfile如下:
# 引入RN官方的Pods配置脚本 require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' # RN 0.64最低支持iOS 10.0,修改平台版本 platform :ios, '10.0' target 'Test' do use_frameworks! # 自动引入React Native核心依赖,指定RN在node_modules中的路径 use_react_native!( :path => "../node_modules/react-native" # 如果需要启用Hermes引擎,取消下面的注释 # :hermes_enabled => true ) # 保留你的项目依赖 pod 'CardIO', '5.4.1' # 本地Libraries中的第三方库,确保路径在升级后依然有效 pod 'RNGestureHandler', :path => './Libraries/react-native-gesture-handler' pod 'BVLinearGradient', :path => './Libraries/react-native-linear-gradient' pod 'RNDeviceInfo', :path => './Libraries/react-native-device-info' pod 'RNFS', :path => './Libraries/react-native-fs' pod 'RNPermissions', :path => './Libraries/react-native-permissions' pod 'Permission-Camera', :path => './Libraries/react-native-permissions/ios/Camera.podspec' pod 'react-native-webview', :path => './Libraries/react-native-webview' pod 'react-native-adjust', :path => './Libraries/react-native-adjust' # 自动链接所有兼容RN自动链接的第三方模块 use_native_modules! target 'TestTests' do inherit! :complete # 测试相关Pods end target 'TestUITests' do # UI测试相关Pods end end
关键修改说明:
- 移除了手动引入React、yoga、DoubleConversion、glog、Folly的代码,改用
use_react_native!宏自动处理核心依赖,避免路径错误 - 添加了RN官方的Pods配置脚本,这是自动链接机制的基础
- 更新了iOS最低版本到10.0,符合RN 0.64的要求
- 保留了你项目中原有的第三方库,但要确保这些库的路径在升级后依然存在,部分旧库可能需要更新版本以适配RN 0.64
步骤3:重新执行pod install
完成上述修改后,回到ios目录执行安装:
cd ios pod install
额外排查点
如果依然报错,可以检查以下内容:
- 确认项目根目录的
node_modules/react-native存在且版本为0.64,执行npm list react-native或yarn list react-native验证 - 检查本地Libraries中的第三方库是否适配RN 0.64,部分旧库可能需要升级到最新兼容版本
- 如果你的项目是将RN源码放在本地Libraries目录(而非通过npm/yarn安装),请确保0.64版本的RN源码完整放置在
./Libraries/react-native路径下
内容的提问来源于stack exchange,提问作者Alejandro Gonzalez
相关产品推荐
相关产品推荐

