Xcode 16.2构建失败:PhaseScriptExecution命令因Node路径缺失报错(React Native iOS)
嘿,这个问题我熟!先看看你遇到的具体错误:
Node found at: /opt/homebrew/Cellar/node/22.6.0/bin/node
/Users/kiranjadhav/Library/Developer/Xcode/DerivedData/PivotalApp-fhfpmifbxjcwrmcuwtusqwdxiyas/Build/Intermediates.noindex/Pods.build/DebugStg-iphonesimulator/hermes-engine.build/Script-46EB2E00028700.sh: line 9: /opt/homebrew/Cellar/node/22.6.0/bin/node: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
本质就是Hermes的构建脚本里硬编码了旧的Node路径,而你现在的Node要么版本更新了、要么安装路径变了,导致Xcode找不到指定的可执行文件。给你几个靠谱的解决办法:
直接修改Hermes脚本里的Node路径
- 打开错误提示里的那个脚本文件:
/Users/kiranjadhav/Library/Developer/Xcode/DerivedData/PivotalApp-fhfpmifbxjcwrmcuwtusqwdxiyas/Build/Intermediates.noindex/Pods.build/DebugStg-iphonesimulator/hermes-engine.build/Script-46EB2E00028700.sh - 找到第9行,把里面的
/opt/homebrew/Cellar/node/22.6.0/bin/node替换成你当前Node的实际路径。怎么查当前路径?打开终端输入which node,复制输出的结果就行。 - 保存脚本后,重新在Xcode里构建试试。
- 打开错误提示里的那个脚本文件:
用nvm统一管理Node版本(更稳妥)
如果你用nvm管理Node,Xcode可能因为环境变量问题找不到nvm里的Node。可以修改Hermes脚本,把固定的Node路径换成动态获取的:
把脚本里的Node路径改成$(nvm which current),这样每次构建都会用你当前激活的nvm Node版本,避免路径硬编码的问题。
另外,也可以在Xcode的Build Settings->Environment Variables里添加NVM_DIR(值为~/.nvm),并把PATH加上$NVM_DIR/versions/node/$(node -v)/bin,确保Xcode能识别nvm环境。重新安装Pods刷新配置
有时候Pod安装时会缓存旧的Node路径,试试彻底清理后重新安装:- 终端进入你的iOS项目目录
- 执行
pod deintegrate清理现有Pod配置 - 执行
pod install重新安装Pods,这时候Hermes的构建脚本会重新生成,大概率会使用当前的Node路径。
备注:内容来源于stack exchange,提问作者Kiran Jadhav

