Windows版NVM安装Node问题

为了方便切换不同的Node版本,我们经常使用Nvm对Node进行管理。最近,发现一个组员在使用nvm切换Node时报错,最后排查完之后才发现,此次发现的问题有别于往常,特意记录一下,仅供大家参考。

问题1: 没有卸载原有的Node就安装Nvm

遇到的第一个问题就是看到没有卸载原有安装的Node,于是立即让其卸载Node,删除环境变量,卸载Nvm后重新安装,Node卸载及Nvm安装的教程网上一搜一大把,大家参考即可。

问题2:安装Nvm后没有生成Node目录的软连接(重点)

首先,这里要了解一个概念符号链接(Symbolic Link),也有人称为软链接,玩过Linux的同学应该比较清楚。

符号链接(symbolic link)是 Linux 系统中的一种文件,它指向系统中的另一个文件或目录。符号链接类似于 Windows 系统中的快捷方式。
软链接和硬链接的区别

软链接类似于快捷方式,它可以指向任意文件系统中的一个文件或目录。 硬链接也可以看作是文件或目录的快捷方式,但是无法在两个不同文件系统之间创建硬链接。 我们将会学习如何创建及删除符号链接,还会了解什么是失效链接,以及如何删除它们。

其实,我们在安装Nvm的过程中,就会选择Node的符号链接目录,如下图所示:

Nvm中,可以认为这个符号链接目录就是我们当前正在使用的Node的目录的映射,如果有兴趣的话,可以在切换Node版本的时候看一下这个目录里面的文件。

在绝大部分人安装Nvm的过程中,这里都是没有问题的,但是偏偏这个哥们在安装Nvm的时候,所有步骤正常,但是在安装完成之后,刚刚创建的符号链接目录会自动删除,Nvm能正常安装Node,但不能切换。这种情况,最先想到了权限问题,果然,这哥们的电脑竟然用的不是系统管理员的账号,于是一顿操作赋权限,结果没啥用,改用超管用户登录,重新安装后依然是同样的问题。搞了一通,没有解决,于是再换一种思路,既然系统自动安装时,符号链接的目录会自动删除,那我手动创建,只要链接存在,切换Node时应该就可以把符号链接的指向变更。

符号链接

对文件创建符号链接

shell 复制代码
mklink "link" "target"

对文件夹创建符号链接

shell 复制代码
mklink /D "link" "target"

上面提到,Nvm能正常安装Node,不能切换版本;此时,我们先安装一个Node版本,比如16.20.0,这个时候我们利用上面的命令手动创建一个软连接目录,示例如下:

其实,这条命令的执行可以认为是手动执行了第一张图中的动作。执行完命令后,确实已经创建了一个符号链接目录,这个目录下的内容和D:\nvm\v16.20.0目录下的内容完全一样。

此时,利用Nvm安装一个其他版本的Node,再用Nvm切换Node版本时已经正常了。

相关推荐
踩着两条虫39 分钟前
「AI + 低代码」的可视化设计器
开发语言·前端·低代码·设计模式·架构
Jagger_1 小时前
项目上线忙碌结束之后,为什么总想找点事做?
前端
GalenZhang8881 小时前
OpenClaw 配置多个飞书账号实战指南
前端·chrome·飞书·openclaw
萌新小码农‍2 小时前
python装饰器
开发语言·前端·python
threelab3 小时前
Three.js 初中数学函数可视化 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
爱学习的程序媛3 小时前
浏览器工作原理全景解析
前端·浏览器·web
我是若尘4 小时前
用 Git Worktree 同时开多个需求,不用来回 stash
前端
IT_陈寒4 小时前
Vue的v-for为什么不加key也能工作?我差点翻车
前端·人工智能·后端
小碗羊肉5 小时前
【JavaWeb | 第十二篇】项目实战——登录功能
java·前端·数据库
一个处女座的程序猿O(∩_∩)O5 小时前
如何保持nginx配置与前端打包dist的路径保持一致、解决页面刷新白屏以及页面跳转问题
运维·前端·nginx