升级React Native后Gradle识别Node.js版本错误问题
问题原因及解决办法
核心问题
你通过nvm切换的Node 21.5版本,并没有被Gradle构建进程识别到——Gradle调用的是系统全局安装的Node 16.20.2,所以触发了版本不兼容的报错。
具体解决步骤
1. 确保终端加载nvm环境
先检查你的终端配置文件(~/.bashrc或~/.zshrc)里有没有nvm的初始化代码,比如:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
如果有,执行source ~/.bashrc(bash终端)或source ~/.zshrc(zsh终端)刷新环境,再重新运行构建命令。
2. 让IDE内置终端读取nvm配置
如果你是用Android Studio的内置终端构建,需要设置它使用登录shell:
- 打开Android Studio的
Settings→Tools→Terminal - 把
Shell path改成/bin/bash -l或/bin/zsh -l(加-l会加载登录环境,包括nvm的配置) - 重启IDE后,在终端里输入
node -v确认版本是21.5,再重新构建项目。
3. 强制Gradle使用指定的Node路径
直接在项目的全局build.gradle(根目录下的那个,不是app模块里的)里添加配置,指定nvm管理的Node绝对路径:
buildscript { ext { nodeExecutable = "/Users/你的用户名/.nvm/versions/node/v21.5.0/bin/node" // 替换成你自己的Node路径 } }
或者在gradle.properties文件里加一行:
node.executable=/Users/你的用户名/.nvm/versions/node/v21.5.0/bin/node
4. 清理系统全局Node的干扰
执行which node,如果输出的路径不是nvm的目录(比如/usr/local/bin/node),说明系统有全局安装的Node:
- 执行
nvm alias default 21.5.0,把nvm的21.5设为默认版本 - 重启终端后再确认
node -v是否正确,必要时可以卸载系统全局的Node。
5. 先验证环境再构建
每次调整后,先在终端执行以下命令确认环境正确:
node -v nvm current which node
确认输出的都是21.5版本和nvm的路径后,再运行npx react-native run-android或者在IDE里重新构建。
内容的提问来源于stack exchange,提问作者Gh05d
相关产品推荐
相关产品推荐

