前言
本文是基于 windows 系统,实现 nvm 管理 nodejs。
因为公司最近更换使用云桌面,又遇到项目依赖安装问题,所以部署了几次nodejs环境。索性把安装配置的过程记录下来,让日后遇到需要环境配置的时候,更加无痛畅快!
1. 卸载已安装的node\nvm(未安装过可忽略)
在安装nvm的时候没有卸载node,可能导致使用nvm安装完之后,node和npm都不可用
node
-
打开「控制面板」→「程序和功能」,找到「Node.js」右键选择「卸载」,按提示完成卸载
-
手动删除残留文件,
- 常见路径:C:\Program Files\nodejs、C:\Program Files (x86)\nodejs;
- 删除用户目录下的缓存 / 配置:C:\Users\你的用户名\AppData\Roaming\npm 和 C:\Users\你的用户名\AppData\Roaming\npm-cache。
nvm
-
打开「控制面板」→「程序和功能」,找到「nvm for Windows」,右键选择「卸载」,按提示完成卸载;
-
手动删除 NVM 安装目录(默认是 C:\Users\你的用户名\AppData\Roaming\nvm 或 C:\Program Files\nvm),直接右键删除文件夹即可。
环境变量
-
右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;
-
在「系统变量」和「用户变量」的「Path」中,删除所有包含 nvm、nodejs、npm 的路径;
-
若有 NVM_HOME、NVM_SYMLINK 等系统变量,直接删除。
验证删除
执行以下命令,若提示「不是内部或外部命令」则说明删除成功:
node -v
npm -v
nvm -v
2.nvm下载安装
- 首先,下载一个安装包
nvm下载地址:nvm.uihtm.com/doc/downloa…
- 选择第一个 同意安装协议
- 选择安装目录,建议安装在D盘根目录
- 选择安装nodejs的目录,建议放在nvm下的nodejs
- 邮件订阅通知,可全部取消
- 订阅通知的邮箱,留空,可以不填
- 安装完成打开powershell
- 输入nvm -v查看是否有版本号输出。如果报错,尝试重开cmd后输入
- settings配置文件检查
- 如果未有版本号输出,请手动添加到环境变量(可跳过)
注意(重要!):一定要修改nvm文件夹, nodejs文件夹的属性,在“属性->安全”一栏中, 设置完全控制权限。如果权限不足,可能会导致使用时一些不可预料的问题发生
3. 通过nvm,安装、管理node.js版本
安装指定node版本,切换版本并启用nvm
# 安装指定node版本
nvm install 22.15.0
# 使用指定版本
nvm use 22.15.0
# 打开nvm的版本控制
nvm on
此时node版本文件会下载到 \nvm 文件夹中,并生成nodejs文件
查看当前版本
# 查看当前已下载的所有版本
nvm ls
(当前只下载了一个版本的nodejs)
查看可用版本
# 查看可供使用的node版本
nvm ls available
这四列的区别:
CURRENT(当前最新版本)、LTS(长期支持版本)、OLD STABLE(旧稳定版本)、OLD UNSTABLE(旧非稳定版本)。
点击其中底部连接可查看更全的版本信息
安装新版本,切换版本
# 下载一个新版本
nvm install 20.20.0
# 使用这个新版本
nvm use 20.20.0
星号所在的版本位置,就是当前使用的node版本。从22版本,切换到了20版本
4. 配置npm 缓存目录、npm 全局包安装目录 的环境变量(非必需,但强烈建议)
理由:
nvm 切换版本后,无法使用前版本的全局包,因 npm 下载的全局包,只在对应的版本中
缓存文件默认存在系统用户目录,Windows 下默认路径易触发权限问题(比如无法写入 C 盘用户目录)
配置流程
- 先在本地建两个文件夹(路径避免空格 / 中文 / 特殊字符)
D:\nvm\node_prefix(全局包目录)、D:\nvm\node_cache(缓存目录)
- 执行 npm 配置命令(关键!)
# 配置全局包安装目录
npm config set prefix "D:\nvm\node_prefix"
# 配置 npm 缓存目录
npm config cache prefix "D:\nvm\node_cache"
检查配置是否成功
# 查看全局包目录
npm config get prefix
# 打印结果为设置的路径
# 查看缓存目录
npm config get cache
# 打印结果为设置的路径
- 配置环境变量
找到「Path」,点击「编辑」→「新建」,粘贴你的 prefix 目录
新增「NODE_PATH」变量,prefix 目录 + node_modules
补充:在新版 Node(v16+)中,NODE_PATH可以忽略。
原因:Node(v16+)在正确配置 npm config set prefix 的前提下, Node 会自动把 prefix 目录下的 node_modules 加入模块查找路径,无需你再通过 NODE_PATH 重复指定。
- 检验是否成功
# 检查 PATH 中是否包含全局包目录
echo %PATH%
# 输出中能看到 `D:\nvm\node_prefix` 即成功
# 检查 NODE_PATH 配置
echo %NODE_PATH%
# 输出 `D:\nvm\node_prefix\node_modules` 即成功
# 安装一个全局包(比如 yarn)
npm install -g yarn
# 执行命令,能输出版本号即成功
yarn -v
# 安装一个全局包(比如 express)
npm install -g express
# 测试 Node 加载全局模块(可选)
node -e "console.log(require.resolve('express'))"
# 输出应指向你的 npm_global 目录,如 "D:\nvm\node_prefix\node_modules\express\index.js"
- 如果想恢复默认路径,但应该不会吧
npm config delete prefix
npm config delete cache
5. 更换镜像源
- npm 查看镜像源
npm config get registry
- npm 配置镜像源
npm config set registry https://registry.npmmirror.com
- 可用镜像源列表
-
淘宝 NPM 镜像源: registry.npmmirror.com
-
cnpm源: r.cnpmjs.org
-
npm官方源:registry.npmjs.org
-
腾讯云 NPM 镜像: mirrors.cloud.tencent.com/npm/ 详细可以访问可用开源镜像
-
华为云 NPM 镜像: mirrors.huaweicloud.com/repository/…
-
北京外国语大学镜像: mirrors.bfsu.edu.cn/nodejs-rele…
恭喜,完成!
更多信息及常见问题:
www.nvmnode.com/zh/faq/
nvm.uihtm.com/doc/faqs.ht…