按步骤操作后仍无法升级Node.js至LTS版本,求解决方案
解决n工具升级Node后版本未更新的问题
我之前也碰到过一模一样的情况!按照n的步骤操作完,node --version还是显示老版本,核心原因基本都是系统PATH路径的优先级冲突——你原来的Node安装路径(比如原生包、brew或者其他方式装的)排在n安装的Node路径前面了,导致系统还是调用旧版本。
下面是一步步排查和解决的方法:
1. 确认n的Node安装是否成功
先验证n有没有真的装好8.11.2版本:
n ls
如果列表里有8.11.2,说明安装没问题,只是系统没找到它。你也可以直接指定路径查看版本:
/usr/local/n/versions/node/8.11.2/bin/node --version
如果输出v8.11.2,那安装是成功的,问题出在PATH上。
2. 检查当前Node的调用路径
执行下面的命令,看看系统现在用的是哪个Node:
which node
如果输出的路径不是/usr/local/n/versions/node/8.11.2/bin/node,而是比如/usr/local/bin/node或者/usr/bin/node,那就是PATH里旧路径的优先级更高。
3. 修复PATH优先级
临时生效(重启终端后失效)
直接把n的Node路径加到当前会话的PATH最前面:
export PATH="/usr/local/n/versions/node/8.11.2/bin:$PATH"
然后再执行node --version,应该就能看到v8.11.2了。
永久生效
需要修改你的shell配置文件,根据你用的shell选择对应的文件:
- 如果是bash:编辑
~/.bash_profile - 如果是zsh:编辑
~/.zshrc
打开配置文件:
# 以zsh为例 open ~/.zshrc
在文件末尾添加一行:
export PATH="/usr/local/n/versions/node/8.11.2/bin:$PATH"
保存后执行命令让配置生效:
source ~/.zshrc
再检查版本,应该就正常了。
额外情况:如果原来的Node是brew安装的
如果你之前用Homebrew装过Node,brew会把Node放在/usr/local/bin,这个路径可能在PATH里比n的路径靠前。这种情况可以先卸载brew的Node:
brew uninstall node
然后再重新用n安装8.11.2,PATH就不会冲突了。
内容的提问来源于stack exchange,提问作者Jannomeister
相关产品推荐
相关产品推荐

