使用nvm全局升级Node至v8.3后新Shell仍显示旧版本?
Node版本切换后新Shell仍指向旧版本?看这里解决!
嘿,我来帮你捋清楚这个问题:
你的问题场景
你在最新版OSX上用nvm v0.33.0升级Node到v8.3,当前bash里操作完确实切到了v8.3.0:
$ which node /Users/me/.nvm/versions/node/v8.1.0/bin/node $ nvm install 8.3 --reinstall-packages-from=8.1 v8.3.0 is already installed. Now using node v8.3.0 (npm v5.3.0) Reinstalling global packages from v8.1.4... Linking global packages from v8.1.4... $ node -v
但新开个shell窗口,Node又变回v8.1.0了:
$ which node /Users/me/.nvm/versions/node/v8.1.0/bin/node $ node -v v8.1.0
你说没在bash配置里找到旧版本的设置,那问题其实出在nvm的默认版本没配置上!
为啥会这样?
nvm的nvm install或者nvm use命令,只会切换当前shell会话的Node版本。当你新开一个shell时,nvm会自动加载它标记为「default」的版本——你之前没把v8.3.0设为默认,所以它还是用之前的v8.1.0。
怎么解决?
很简单,几步搞定:
- 先看看现在nvm管理的所有版本,确认v8.3.0存在:
nvm ls
这个命令会列出所有已安装的版本,->指向当前shell用的版本,default标记的就是新shell会加载的版本,你会看到default还是v8.1.0。
- 把v8.3.0设为默认版本:
nvm alias default 8.3.0
执行完这个命令,nvm就会把v8.3.0设为全局默认版本了。
- 验证一下:
新开一个bash窗口,输入这两个命令:
node -v # 应该输出 v8.3.0 which node # 应该指向 /Users/me/.nvm/versions/node/v8.3.0/bin/node
额外排查(如果上面没解决的话)
要是设置默认后还是有问题,你可以再检查下bash的配置文件(比如~/.bashrc、~/.bash_profile、~/.profile),看看有没有手动修改PATH的语句,不小心覆盖了nvm的路径。不过根据你的描述,大概率就是默认版本没设置的问题,先试试上面的步骤~
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

