在多个项目并行开发的情况下,只安装一个 Node.js 版本基本是不够用的。NVM 的作用不只是“切换版本方便”,而是把 Node 环境从“系统依赖”变成“项目可切换资源”,在开发过程中效率会大大提升。
一、为什么需要 NVM
比如我当前使用的是 Node 22 版本,在运行一些旧项目时,会直接报错:
Error: error:0308010C:digital envelope routines::unsupported这个问题本质上是 Node.js 与 OpenSSL 版本不兼容导致的。较新的 Node 版本升级到了 OpenSSL 3.0,而该版本默认禁用了部分旧的加密算法,导致一些依赖旧实现的项目无法正常运行。
如果电脑里只安装一个 Node 版本,这种场景下就会非常被动:要么反复重装 Node,要么修改环境变量,过程繁琐且容易出错。
后来我基本固定了一种方式:在开始任何项目之前,先把 NVM 环境准备好。这样每个项目需要什么版本,直接切换即可,不需要再对系统环境做额外干预,整个开发过程会稳定很多。
二、NVM 和 n 的区别
Node 版本管理工具里,常见的主要是 n 和 NVM。
简单来说,n 更适合 macOS / Linux,而 Windows 环境下通常使用 nvm-windows。两者思路类似,但实现方式不同,所以在 Windows 上直接用 NVM 会更省事一些。
三、NVM 下载与安装
Windows 下可以直接下载安装包,安装过程本身不复杂,但有一个点我比较建议注意:目录尽量一开始就规划好。
我自己一般会这样设置:
NVM 安装目录:D:\env\nvm
Node 软链接目录:D:\env\nvm\nodejs安装时直接指定这两个路径,后面管理起来会清晰很多。
安装完成后,可以打开命令行验证:
nvm -v能看到版本号,就说明安装成功。
四、基础配置(settings.txt)
安装完成后,建议看一下 NVM 目录下的 settings.txt,这里可以顺手做一些优化配置:
root: D:\env\nvm
path: D:\env\nvm\nodejs
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/这里我通常会改两个点:一个是路径统一放在 D 盘,方便管理;另一个是使用国内镜像,加快下载速度。
五、环境变量
大多数情况下,安装程序会自动帮你配置好环境变量。如果需要手动确认,可以看一下是否包含:
NVM_HOME = D:\env\nvm
NVM_SYMLINK = D:\env\nvm\nodejs以及 Path 中是否包含对应路径。
这一块我自己的经验是:如果不是特殊情况,不要随意手动改动,默认配置往往更稳定。
六、日常使用方式
NVM 的使用其实非常简单,我平时用得最多的也就几个命令。
安装指定版本:
nvm install 16
nvm install 20查看已安装版本:
nvm ls切换版本:
nvm use 16查看当前版本:
node -v基本上就是:哪个项目需要哪个版本,切过去就行,几秒钟解决问题。
七、配合 pnpm 的一个小优化
如果在用 pnpm,我一般会顺手把缓存目录也调整一下,避免默认占用 C 盘:
pnpm config set store-dir D:\env\nvm\store这样 Node、NVM、pnpm 的相关文件都在一个目录下,后续清理或迁移都比较方便。
八、VSCode 常见问题
在 Windows 上,有时会遇到在 VSCode 里执行 npm run dev 报权限错误的情况。
我一般有两个处理方式。
一种是直接用管理员身份启动 VSCode;另一种是调整 PowerShell 执行策略:
Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned大多数情况下,这两种方式都可以解决问题。
总结
我踩过一个很典型的坑:手动改了 Node 目录和 settings.txt,结果 nvm use 显示成功,node -v 却没变。
本质原因是两个路径不一致,软链接没生效。
解决很简单:删掉手动配置,按默认流程重装,让 NVM 自己管理路径。
至于我是怎么知道的……别问,问就是实践出真知🙂。
NVM:一键管理多个 Node 版本
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法