You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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目录:
    rm -rf ~/Library/Developer/Xcode/DerivedData/MyApp-eclfaotwufydlccnbbpdrgkgblbf
    
    或直接清空整个Derived Data文件夹:
    rm -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-jsi target
  • 进入Build Settings,搜索Header Search Paths,确保包含路径:
    $(SRCROOT)/../node_modules/react-native/ReactCommon/jsi
    
    并将该路径的设置改为recursive
  • 搜索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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:56:37