分享我的发现、想法与心得

0%

nvm-windows切换node版本不生效

起因

在研究pdfjs这个库,看怎样利用它再封装一个在相对可控的UI组件。然后这个库最新版本需要node的16版本以上。

好家伙!我试试安装16版本,又遇到问题了!npm安装依赖都跑不起,后来发现是nvm-windows的问题。^1

更新nvm-windows的版本至1.1.11后,又遇到新问题,node版本切换时没有生效,就像下面这个样子:

1
2
3
4
5
6
7
8
$ nvm current
v16.20.0

$ nvm use 14.18.2
Now using node v14.18.2 (64-bit)

$ nvm current
v16.20.0

解决办法

我的情况是这样的,node当前版本为16,使用版本14失效。

1
2
3
4
5
6
7
8
$ nvm current
v16.20.0

$ nvm use 14.18.2
Now using node v14.18.2 (64-bit)

$ nvm current
v16.20.0

后来发现重新安装nvm-windows v1.1.11后,存在着两个符号链接。

1
2
3
$ where node
C:\nodejs\node.exe
C:\Program Files\nodejs\node.exe

查看文件属性后发现,C:\nodejs\的符号链接指向的是16的版本,而C:\Program Files\nodejs\的符号链接指向的是14的版本。

后来我把C:\nodejs\node.exe这个删除后,环境中的node版本就能正常显示了。

1
2
$ nvm current
v14.18.2

正如 @tsauvajon 所说,最近新版本使用了C:\Program Files\nodejs\的符号链接,旧版本的符号链接并没有清除而导致node版本不能正常切换。

后续

我反馈问题过了两天,nvm-windows的作者coreybutler 给了令我满意的回应。他想回应的是这不是一个bug,这只是升级安装的姿势不对。他建议如果要升级,还是使用升级工具,而不是删除旧版本再重新安装,这就能避免出现和我同类的情况。

写在最后,确实我自己对这个工具认识不够,非常感谢 coreybutler 的回复。