NVM(Node Version Manager)是一个用于管理多个 Node.js 版本的工具,它允许你在同一台机器上安装、切换、卸载不同的 Node.js 版本,有效解决不同项目对 Node.js 版本依赖不一致的问题。
注:本文档同时介绍 Windows 系统下的 nvm-windows 和 Linux/macOS 下的 nvm,两者命令略有不同,会特别说明。
NVM介绍
- 不同项目可能依赖不同版本的 Node.js(例如 Vue 2 项目可能需要 Node 12,Vue 3 项目可能需要 Node 16+)。
- 某些 npm 包仅在特定 Node 版本下正常工作。
- 方便测试应用在不同 Node 版本下的兼容性。
- 无需反复卸载重装 Node.js,一键切换版本,提高开发效率。
NVM 安装
Windows(nvm-windows)
-
卸载已安装的 Node.js (如有) 如果系统已安装 Node.js,建议先卸载,避免冲突。可通过控制面板卸载,并删除相关环境变量(如
NODE_HOME和 Path 中的 Node.js 条目),避免冲突。 -
下载安装包 访问 nvm-windows 发布页,下载最新版本的
nvm-setup.exe。 -
安装 nvm 双击运行安装程序,设置安装路径(例如
D:\nvm)和 Node.js 的符号链接路径(例如D:\nodejs)。注意:路径中不要包含中文或空格,以免后续出现问题。
-
配置镜像源(可选) 由于国内访问官方 Node 镜像较慢,可配置国内镜像。在 nvm 安装目录下找到
settings.txt,添加以下两行:rubynode_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/保存后,后续安装 Node 时会从淘宝镜像下载。
-
验证安装 打开新的命令提示符,输入
nvm,若显示帮助信息则安装成功。注意 :Windows 下切换版本(
nvm use)需要以管理员身份运行命令提示符,否则可能因权限不足而失败。
Linux/macOS
在 Unix-like 系统上安装 nvm 通常使用脚本:
bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 或使用 wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
安装脚本会自动将 nvm 的配置添加到 shell 配置文件(如 ~/.bashrc、~/.zshrc 等)。安装完成后,重新加载配置或重新打开终端:
bash
source ~/.bashrc # 如果使用 bash
# 或
source ~/.zshrc # 如果使用 zsh
验证安装:nvm --version。
可选配置:如需使用国内镜像加速下载,可以在终端中设置环境变量:
arduinoexport NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/为了永久生效,可将该行添加到 shell 配置文件中。
NVM 常用命令
| 命令 | 说明 |
|---|---|
nvm version |
查看 nvm 版本 |
nvm list 或 nvm ls |
列出已安装的 Node 版本,当前使用版本前会标注 * |
nvm list available |
(仅 Windows) 列出可远程安装的 Node 版本 |
nvm install <version> |
安装指定版本的 Node.js,例如 nvm install 16.20.0 |
nvm install latest |
安装最新版本的 Node.js |
nvm install lts |
安装最新的 LTS 版本 |
nvm use <version> |
切换当前会话使用的 Node 版本(Windows 需管理员权限) |
nvm uninstall <version> |
卸载指定版本的 Node.js |
nvm alias default <version> |
设置默认使用的 Node 版本(新打开命令行时自动使用该版本) |
nvm current |
显示当前正在使用的 Node 版本 |
nvm reinstall-packages <version> |
(仅 Unix) 将 <version> 版本的全局 npm 包迁移到当前版本 |
nvm --help |
查看帮助信息 |
示例
csharp
# 列出可安装的版本(Windows)
nvm list available
# 安装 Node.js 16.20.0
nvm install 16.20.0
# 安装 Node.js 18.16.0
nvm install 18.16.0
# 切换到 Node 16.20.0
nvm use 16.20.0
# 查看已安装版本
nvm list
# 设置默认版本为 18.16.0
nvm alias default 18.16.0
常见问题
1. nvm use 切换版本时提示"拒绝访问"或"exit status 1"
- 原因:nvm 需要管理员权限才能创建符号链接切换 Node 版本。
- 解决 :以管理员身份打开命令提示符,再次执行
nvm use <version>。
2. 安装 Node 版本后,npm 命令找不到
- 原因:可能是镜像配置问题或安装包不完整。
- 解决 :尝试重新安装该版本,或手动配置 npm 镜像源。在 nvm 安装目录的
settings.txt中确认镜像地址正确。
3. 全局安装的包无法在切换版本后使用
-
原因:每个 Node 版本拥有独立的全局包目录,切换版本后需要重新安装全局包。
-
解决:
- 手动重新安装所需全局包(如
npm install -g yarn)。 - Unix 用户 可以使用
nvm reinstall-packages <旧版本号>将旧版本的全局包迁移到新版本。 - Windows 用户暂无直接迁移命令,可考虑将全局包安装到自定义目录并配置环境变量,但一般不推荐。
- 手动重新安装所需全局包(如
4. nvm 命令找不到
- 原因:nvm 未正确添加到环境变量,或未重启终端。
- 解决:检查环境变量中是否包含 nvm 安装路径,重启命令行或系统。
卸载 NVM
Windows
- 运行 nvm 安装目录下的
uninstall.exe进行卸载。 - 删除 nvm 安装文件夹及 Node.js 符号链接文件夹(如
D:\nodejs)。 - 清理环境变量:删除用户变量和系统变量中的
NVM_HOME、NVM_SYMLINK,以及 Path 中的相关条目。
Linux/macOS
-
删除 nvm 目录(通常为
~/.nvm):bashrm -rf ~/.nvm -
编辑 shell 配置文件(如
~/.bashrc、~/.zshrc),移除与 nvm 相关的配置行。 -
重新加载配置。