React Native iOS构建报错:Command PhaseScriptExecution失败,路径不存在
解决NX Monorepo下React Native iOS构建的「Command PhaseScriptExecution failed」错误
问题核心
报错根源是iOS构建脚本无法定位到monorepo根目录下的react-native/scripts/xcode/with-environment.sh——默认路径是相对iOS项目目录的,和NX的monorepo结构不匹配,直接添加../../可能路径计算错误。
解决方案
1. 修正脚本的相对路径
打开Xcode,进入项目的Build Phases标签,找到「Bundle React Native code and images」脚本,修改其中的路径为正确的相对路径:
- 先确认目录结构:假设monorepo根目录下,iOS项目位于
apps/[你的应用名]/ios/,那么正确路径应为../../../node_modules/react-native/scripts/xcode/with-environment.sh - 替换脚本中原有的
../node_modules/...部分,确保路径能精准指向根目录的node_modules
2. 调整NX项目配置
检查项目根目录下对应RN应用的project.json,确认targets中的ios构建配置是否指定了正确的node_modules路径。可在options中添加nodeModulesPath参数,直接指向根目录的node_modules文件夹。
3. 清理缓存并重新安装依赖
- 关闭Xcode,删除Derived Data:通过
Xcode > File > Project Settings找到Derived Data路径,删除整个文件夹 - 在monorepo根目录执行依赖清理与安装:
nx run <你的应用名>:clean npm install # 或 yarn install - 进入iOS目录重新安装Pods:
cd apps/[你的应用名]/ios pod install
4. 设置NODE_PATH环境变量
在Xcode的Build Settings标签下,搜索「Environment Variables」,添加NODE_PATH变量:
- 值设为
../../../node_modules(根据你的实际目录结构调整相对路径),让脚本能正确定位到根目录的依赖包
5. 修复脚本权限
如果脚本缺少可执行权限,也会触发类似报错。在monorepo根目录执行:
chmod +x node_modules/react-native/scripts/xcode/with-environment.sh
内容的提问来源于stack exchange,提问作者ofundefined
相关产品推荐
相关产品推荐

