Xcode 12.5.1构建RN 64.2项目报PhaseScriptExecution非零退出码错误
报错复现
/Users/apps/myracnative/node_modules/react-native/scripts/generate-specs.sh: line 27: readlink: command not found
/Users/apps/myracnative/node_modules/react-native/scripts/generate-specs.sh: line 27: dirname: command not found
/Users/apps/myracnative/node_modules/react-native/scripts/generate-specs.sh: line 27: cd: : No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
报错根因
该错误是Xcode构建阶段执行RN 0.64版本自带的generate-specs.sh脚本时,运行环境的PATH环境变量缺失系统默认命令路径,导致找不到readlink、dirname这类基础shell命令,与pod依赖安装、项目文件完整性无关。
解决方案
按优先级依次尝试以下操作:
- 方案一:修改Xcode构建的系统路径配置
- 打开Xcode项目,选中左侧项目根目录,选择对应iOS target,切换到「Build Settings」标签页
- 搜索
PATH,找到「Search Paths」分组下的System Path设置项 - 确保值包含
/usr/bin:/bin:/usr/sbin:/sbin,缺失则直接添加该内容 - 按快捷键
Command + Shift + K清理Xcode缓存后重新构建
- 方案二:修改RN脚本的环境变量声明
- 打开报错脚本文件:
node_modules/react-native/scripts/generate-specs.sh - 在文件首行
#!/bin/bash下方新增一行:export PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH - 重新执行
pod install后再构建项目
- 打开报错脚本文件:
- 方案三:M1芯片Mac额外适配
如果使用M1系列芯片设备,需额外在Xcode的「Build Phases」中找到「Bundle React Native code and images」阶段,在脚本最上方新增两行内容:export NODE_BINARY=nodeexport PATH=/usr/bin:/bin:/usr/sbin:/sbin:$(dirname $(which node)):$PATH
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

