起因

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

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

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

$ 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失效。

$ 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后,存在着两个符号链接

$ 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版别就能正常显示了。

$ nvm current
v14.18.2

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

后续

我反应问题过了两天,nvm-windows的作者coreybutler 给了令我满意的回应。他想回应的是这不是一个bug,这仅仅晋级装置的姿势不对。他建议假如要晋级,还是运用晋级工具,而不是删去旧版别再重新装置,这就能避免出现和我同类的状况。

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

Footnotes

  1. github.com/npm/cli/iss… ↩