文章目录
1. NVM简介
NVM的全称是 “Node Version Manager”。它是一个开源的版本管理工具,用于在命令行界面中管理多个Node.js版本
NVM允许用户轻松切换不同版本的Node.js,这对于需要在不同项目之间使用不同Node.js版本的开发者来说非常有用
2. 卸载原有的Node.js
使用NVM之前需要先卸载电脑上原有的Node.js,推荐使用Geek Uninstaller卸载
https://geekuninstaller.com/download
卸载原有的Node.js后,按下Win + R
快捷键,输入cmd
打开终端,在终端中输入node -v
指令
node -v
当出现'node' 不是内部或外部命令,也不是可运行的程序或批处理文件。
时,说明原有的Node.js卸载成功了
3. NVM的完整安装流程
3.1 下载NVM
NVM的最新版本是1.2.2(截至2025年4月11日)
下载地址:https://github.com/coreybutler/nvm-windows/releases/tag/1.2.2
https://github.com/coreybutler/nvm-windows/releases/tag/1.2.2
我们通过GitHub下载NVM的,如果无法正常访问GitHub,可以参考我的另一篇博文:GitHub的使用技巧(加速访问GitHub、查看GitHub的热门项目、查看GitHub推荐的项目、Fork、Issue、快速找到项目的安装包、GitHub的各种快捷键)
3.2 安装NVM
双击nvm-setup.exe
文件安装NVM
点击I accept the agreement
后点击Next
选择NVM的安装路径(这个安装路径后面会用到),选择完成后点击Next
暂时不选择symlink的存放路径(后面会重新设置),直接点击Next
点击Next
无需填写电子邮箱,点击Next
点击Install
安装完成的界面
3.3 验证NVM是否成功安装
按下Win + R
快捷键,输入cmd
打开终端,在终端中输入nvm -v
指令
nvm -v
当终端中显示出NVM的具体版本号时,就说明NVM安装成功了
4. NVM相关配置
4.1 创建用于存放多个Node.js的目录
我们在NVM的安装目录下新建一个名为nodejs
的目录,用于存放各个版本的Node.js
4.2 设置环境变量(用户变量和系统变量都要设置)
按下Win + i
快捷键打开设置界面,搜索环境变量关键字,点击编辑系统环境变量
点击环境变量
由于NVM在安装的时候同时设置了用户变量和环境变量,所以我们需要分别修改用户变量和环境变量中名为
NVM_SYMLINK
的变量
4.2.1 用户变量
在用户变量中找到NVM_SYMLINK
变量,双击打开
接着点击浏览目录
选择我们刚才创建的用于存放多个Node.js的目录,最后点击确定,每一个窗口都要点击确定
4.2.2 系统变量
在系统变量中找到NVM_SYMLINK变量,双击打开
接着点击浏览目录
选择我们刚才创建的用于存放多个Node.js的目录,最后点击确定,每一个窗口都要点击确定
4.3 验证环境变量是否设置成功
按下Win + R
快捷键,输入cmd
打开终端,在终端中输入echo %NVM_HOME% & echo %NVM_SYMLINK%
指令
echo %NVM_HOME% & echo %NVM_SYMLINK%
当终端中显示出两个环境变量的值时,就说明环境变量设置成功了
4.4 设置Node镜像和npm镜像
我们在NVM的安装目录下找到settings.txt
,打开文件后将path的值更改为我们刚才创建的用于存放多个Node.js的目录
最后在文件末尾添加以下内容,保存文件
node_mirror: http://npmmirror.com/mirrors/node/
npm_mirror: http://registry.npmmirror.com/mirrors/npm/
4.5 删除用于存放多个Node.js的目录
删除我们刚才创建的用于存放多个Node.js的目录,也可以选择文件夹后按下CTRL+D
快捷键删除
为什么我们创建用于存放多个Node.js的目录后又要删除呢,主要是因为我们创建的目录是一个真实目录,而NVM需要的是一个虚拟目录(可以理解为Windows系统中的快捷方式或Linux系统中的软连接),具体可以参考本文的NVM管理多个Node.js版本的原理章节
将真实目录删除之后,NVM会为我们自动创建一个快捷方式
4.6 开启使用NVM管理Node.js版本选项
输入以下指令,开启使用NVM管理Node.js版本选项
nvm on
5. NVM的常用命令
5.1 查看可安装的Node.js版本
nvm list available
nvm list available列出的大多都是较新版本的Node.js,如果想下载旧版本的Node.js,可以访问https://nodejs.org/zh-cn/about/previous-releases(网站仅列出了每一个旧版本的最后一个稳定版)
5.2 安装指定版本的Node.js
nvm install <version>
例如,安装22.14.0版本的Node.js
nvm install 22.14.0
5.3 使用某个Node.js版本
nvm use <version>
例如,使用22.14.0版本的Node.js
nvm use 22.14.0
使用某个Node.js版本后,可以输入以下指令检查是否设置成功
node -v
npm -v
5.4 显示当前正在使用的Node.js版本
5.5 列出已安装的所有Node.js 版本
nvm list
5.6 卸载指定版本的Node.js
nvm uninstall <version>
例如,卸载22.14.0版本的Node.js
nvm uninstall 22.14.0
6. 使用NVM时可能遇到的问题
6.1 The process cannot access the file because it is being used by another process.
6.1.1 问题呈现
在使用nvm下载低版本的Node.js(14.21.3)时控制台抛出以下错误
Downloading node.js version 14.21.3 (64-bit)…
Complete
Downloading npm…
Creating C:\Users\冰封神奇\AppData\Local\Temp\nvm-install-1038795423\temp
Downloading npm version 6.14.18… Download failed. Rolling Back.
C:\Users\冰封神奇\AppData\Local\Temp\nvm-install-1038795423\temp\npm-v6.14.18.zip
Rollback failed. remove C:\Users\冰封神奇\AppData\Local\Temp\nvm-install-1038795423\temp\npm-v6.14.18.zip: The process cannot access the file because it is being used by another process.
error installing 14.21.3: Could not download npm for node v14.21.3.
Please visit http://registry.npmmirror.com/mirrors/npm/14.21.3 to download npm.
It should be extracted to F:\nvm\nvm\v14.21.3
6.1.2 问题产生的原因
从控制台中给出的报错信息中可以看出,Node下载成功了(在文件资源管理器中可以看到对应版本的Node.js),但是npm没有下载成功
具体的原因是npm压缩包的保存路径和nvm提取压缩包的路径不一致
6.1.3 解决方法
参考我的另一篇博文:NVM下载低版本的Node.js时报错The process cannot access the file because it is being used by another process.
6.2 activation error: NVM_SYMLINK is set to a physical file/directory at F:\nvm\nodejs
6.2.1 问题呈现
C:>nvm on
nvm enabled
activation error: NVM_SYMLINK is set to a physical file/directory at F:\nvm\nodejs
Please remove the location and try again, or select a different location for NVM_SYMLINK.
6.2.2 问题产生的原因
我们创建的用于存放各个Node.js版本的目录是一个真实目录,而NVM需要的是一个虚拟目录(可以理解为Windows系统中的快捷方式或Linux系统中的软连接),具体可以参考本文的NVM管理多个Node.js版本的原理章节
6.2.3 解决方法
参考本文的删除用于存放多个Node.js的目录章节
7. NVM管理多个Node.js版本的原理
其实NVM管理多个Node.js版本的原理并不复杂,在安装NVM时,NVM让我们选定了两个目录,一个是NVM的安装目录,对应setting.txt文件中的root属性,也对应着系统环境变量中的NVM_HOME属性,所有版本的Node.js都会安装在这个目录下
另一个目录是软链接(相当于Windows系统中的快捷方式和Linux系统中的软连接)的位置,对应setting.txt文件中的path属性,也对应着系统环境变量中的NVM_SYMLINK属性,该软链接指向的就是具体版本的Node.js
我们在文件资源管理器中可以验证这一点(nodejs目录前面的文件夹图标的左下角有一个快捷方式的图标)
右键快捷方式,查看快捷方式的属性,就可以看到快捷方式具体指向了哪个目录
我们在cmd窗口中输入nvm use <version>
指令时,本质上就是在调整快捷方式的指向
知道NVM管理多个Node.js版本的原理之后,你是不是觉得十分简单,甚至感觉自己也能做一个类似的软件出来
如果你有这个想法,恭喜你,你的思维已经比一般的程序员高不少了,其实很多时候想法才是最重要的,技术只是一个载体,或者说是一个工具
关键之处在于将想法变成现实的执行力,就像NVM的作者一样,相信他也是在开发项目的时候,发现切换多个版本的Node.js版本时很麻烦,所以开发出了nvm软件,并受到了广大开发者的青睐
所以说,如果你也有类似的想法,大可以自己花时间做一个产品出来,再适当推广,或许你也能成为下一个大牛