React Native Xcode构建失败:JSCRuntime.h拷贝错误求助
React Native Xcode构建失败:CpHeader JSCRuntime.h 错误解决方案
问题详情
构建失败时的错误信息:
The following build commands failed: CpHeader /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-eclfaotwufydlccnbbpdrgkgblbf/Build/Products/Debug-iphonesimulator/React-jsi/jsi.framework/Headers/JSCRuntime.h /Users/myname/Desktop/MyApp/node_modules/react-native/ReactCommon/jsi/JSCRuntime.h (in target 'React-jsi' from project 'Pods') (1 failure)
项目使用React Native 0.70.6,未使用Expo,package.json依赖如下:
{ "name": "MyApp", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", "test": "jest", "lint": "eslint ." }, "dependencies": { "@react-native-firebase/app": "^16.5.0", "@react-native-firebase/auth": "^16.5.0", "@react-native-google-signin/google-signin": "^9.0.2", "@react-native-masked-view/masked-view": "^0.2.8", "@react-navigation/native": "^6.1.1", "@react-navigation/native-stack": "^6.9.7", "@react-navigation/stack": "^6.3.10", "axios": "^1.2.2", "react": "18.1.0", "react-native": "0.70.6", "react-native-gesture-handler": "^2.8.0", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^3.18.2", "react-native-webview": "^11.26.0", "react-native-youtube-iframe": "^2.2.2" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "babel-jest": "^26.6.3", "eslint": "^7.32.0", "jest": "^26.6.3", "metro-react-native-babel-preset": "0.72.3", "react-test-renderer": "18.1.0" }, "jest": { "preset": "react-native" } }
解决方案
1. 清理构建缓存与Derived Data
- 关闭Xcode,删除当前项目的Derived Data目录:
或直接清空整个Derived Data文件夹:rm -rf ~/Library/Developer/Xcode/DerivedData/MyApp-eclfaotwufydlccnbbpdrgkgblbfrm -rf ~/Library/Developer/Xcode/DerivedData - 清理npm缓存:
npm cache clean --force - 清理Pods缓存:
pod cache clean --all
2. 完全重新安装依赖与Pods
- 删除本地依赖和锁文件:
rm -rf node_modules package-lock.json - 重新安装npm依赖:
npm install - 进入iOS目录,重置Pods:
cd ios rm -rf Pods Podfile.lock pod install
3. 检查并修复文件权限
- 检查目标文件的权限:
ls -l /Users/myname/Desktop/MyApp/node_modules/react-native/ReactCommon/jsi/JSCRuntime.h - 若权限不足,修改文件权限:
chmod 644 /Users/myname/Desktop/MyApp/node_modules/react-native/ReactCommon/jsi/JSCRuntime.h - 确认Derived Data目标路径存在且有写入权限,不存在则手动创建:
mkdir -p /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-eclfaotwufydlccnbbpdrgkgblbf/Build/Products/Debug-iphonesimulator/React-jsi/jsi.framework/Headers/
4. 调整Xcode构建配置
- 打开Xcode,找到
Pods项目下的React-jsitarget - 进入
Build Settings,搜索Header Search Paths,确保包含路径:
并将该路径的设置改为$(SRCROOT)/../node_modules/react-native/ReactCommon/jsirecursive - 搜索
Copy Headers,检查JSCRuntime.h是否在Public或Private列表中,若不在则手动添加,确保文件路径正确
5. 调整依赖版本兼容性
- 尝试升级React Native到同分支的修复版本:
npm install react-native@0.70.7 - 确认
@react-native-firebase版本与React Native 0.70.6兼容,若存在兼容性问题,可尝试调整到对应兼容版本后重新执行pod install
内容的提问来源于stack exchange,提问作者cindy
相关产品推荐
相关产品推荐

