XCode 14中React Native项目运行iOS失败:PhaseScriptExecution命令报错
React Native iOS构建报错:nvm default版本未安装
报错信息
N/A: version "default -> N/A" is not yet installed.
You need to run "nvm install default" to install it before using it.
Command PhaseScriptExecution failed with a nonzero exit code
环境信息
System: OS: macOS 12.5.1 CPU: (10) arm64 Apple M1 Max Memory: 359.91 MB / 32.00 GB Shell: 5.8.1 - /bin/zsh Binaries: Node: 16.17.0 - /usr/local/bin/node Yarn: 1.22.18 - ~node_modules/.bin/yarn npm: 8.19.1 - /opt/homebrew/bin/npm Watchman: 2022.09.05.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.2 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.4, iOS 16.0, macOS 12.3, tvOS 16.0, watchOS 9.0 Android SDK: Not Found IDEs: Android Studio: 2021.2 AI-212.5712.43.2112.8609683 Xcode: 14.0/14A309 - /usr/bin/xcodebuild Languages: Java: 11.0.15 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 17.0.2 => 17.0.2 react-native: 0.67.4 => 0.67.4 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found
已移除./zshrc中的nvm配置,但报错依然存在。
解决方案
1. 检查Xcode构建脚本的nvm引用
打开Xcode,进入项目target的Build Phases,找到Bundle React Native code and images脚本,查看是否有调用nvm的代码(比如nvm use default)。如果有,直接替换为系统node的绝对路径:
# 替换原nvm相关代码 export NODE_BINARY="/usr/local/bin/node"
2. 清理Xcode缓存
- 按下
Command + Shift + K清理当前项目构建缓存 - 手动删除Derived Data:打开Finder,按
Command + Shift + G,输入~/Library/Developer/Xcode/DerivedData,删除对应项目的文件夹
3. 检查所有shell配置文件
除了.zshrc,还要检查.bashrc、.bash_profile、.zprofile,确保没有残留的nvm配置(比如export NVM_DIR=...或source ~/.nvm/nvm.sh),删除后重启终端,执行echo $NVM_DIR,输出为空则说明环境变量清理干净。
4. 修改React Native的Xcode脚本
如果上述方法无效,直接修改项目内的RN构建脚本:
进入ios/node_modules/react-native/scripts/,打开react-native-xcode.sh,找到判断nvm的代码块,替换为强制指定node路径:
# 替换原nvm判断代码 NODE_BINARY="/usr/local/bin/node"
5. 验证环境并重新构建
重启终端后,执行以下命令确认:
which node应输出/usr/local/bin/nodenode -v应显示16.17.0- 重新执行
npx react-native run-ios
内容的提问来源于stack exchange,提问作者changey
相关产品推荐
相关产品推荐

