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版本时已经正常了。

相关推荐
天下无贼!1 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr1 小时前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林1 小时前
npm发布插件超级简单版
前端·npm·node.js
罔闻_spider2 小时前
爬虫----webpack
前端·爬虫·webpack
吱吱鼠叔2 小时前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab
爱喝水的小鼠2 小时前
Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive
前端·javascript·vue.js
盏灯2 小时前
前端开发,场景题:讲一下如何实现 ✍电子签名、🎨你画我猜?
前端
WeiShuai2 小时前
vue-cli3使用DllPlugin优化webpack打包性能
前端·javascript
Wandra2 小时前
很全但是超级易懂的border-radius讲解,让你快速回忆和上手
前端
ice___Cpu2 小时前
Linux 基本使用和 web 程序部署 ( 8000 字 Linux 入门 )
linux·运维·前端