Ubuntu系统下nvm切换Node至v9.0.0后rush install版本识别异常求助
为啥nvm切了Node版本,rush install还认成12.x?
这种情况我在Ubuntu上也踩过坑,大概率是环境变量、shell会话或者工具缓存的问题,咱们一步步来排查解决:
1. 当前Shell没刷新环境变量
nvm切换版本后,新的Node路径是通过修改环境变量生效的,但如果刚切完就跑rush,有时候环境变量还没完全同步;或者你是在旧终端窗口操作,版本切换的配置没加载进来。
- 解决办法:在当前终端执行
source ~/.nvm/nvm.sh刷新环境变量,然后再跑rush install;或者干脆关掉当前终端,重新开一个新窗口再操作,新窗口会自动加载nvm的最新配置。
2. 系统全局Node版本优先级更高
Ubuntu默认可能自带Node,或者你之前用apt装过全局的Node 12.x。如果nvm的版本路径在系统全局路径之后,shell就会优先调用全局的Node,导致rush识别错版本。
- 先排查:执行
which node,看输出的路径是不是nvm的目录(比如~/.nvm/versions/node/v9.0.0/bin/node)。如果输出是/usr/bin/node这种系统路径,那就是全局版本抢了优先级。 - 解决办法:
- 临时调整PATH:执行
export PATH=~/.nvm/versions/node/v9.0.0/bin:$PATH,把nvm的路径放到最前面,再跑rush; - 彻底解决:卸载系统全局的Node,执行
sudo apt remove nodejs,之后nvm的版本就会成为默认选项。
- 临时调整PATH:执行
3. Rush缓存了旧的环境信息
Rush有时候会缓存环境检测的结果,哪怕你切换了Node版本,它还是抱着旧缓存不放。
- 解决办法:执行
rush purge清理Rush的缓存,然后再重新运行rush install。
4. 项目配置硬指定了Node版本
检查下项目根目录的.rush.json配置文件,看看有没有强制指定Node版本为12.x的设置。有些项目会在配置里锁死Node版本范围,哪怕你本地切了版本也没用。
- 排查:打开
.rush.json,搜索nodeVersion相关字段,如果看到设置成了12.x之类的,改成你需要的范围(比如>=9.0.0 <11.0.0)再试试。
内容的提问来源于stack exchange,提问作者ColoradoStudent




