阅读视图

发现新文章,点击刷新页面。

利用 nvm 管理 node.js 版本(卸载、安装、环境变量、镜像源全覆盖)

nvm-nodejs.png

前言

  本文是基于 windows 系统,实现 nvm 管理 nodejs。

  因为公司最近更换使用云桌面,又遇到项目依赖安装问题,所以部署了几次nodejs环境。索性把安装配置的过程记录下来,让日后遇到需要环境配置的时候,更加无痛畅快!

1. 卸载已安装的node\nvm(未安装过可忽略)

在安装nvm的时候没有卸载node,可能导致使用nvm安装完之后,node和npm都不可用

node
  1. 打开「控制面板」→「程序和功能」,找到「Node.js」右键选择「卸载」,按提示完成卸载

  2. 手动删除残留文件,

   - 常见路径:C:\Program Files\nodejs、C:\Program Files (x86)\nodejs;

   - 删除用户目录下的缓存 / 配置:C:\Users\你的用户名\AppData\Roaming\npm 和 C:\Users\你的用户名\AppData\Roaming\npm-cache。

nvm
  1. 打开「控制面板」→「程序和功能」,找到「nvm for Windows」,右键选择「卸载」,按提示完成卸载;

  2. 手动删除 NVM 安装目录(默认是 C:\Users\你的用户名\AppData\Roaming\nvm 或 C:\Program Files\nvm),直接右键删除文件夹即可。

环境变量
  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;

  2. 在「系统变量」和「用户变量」的「Path」中,删除所有包含 nvm、nodejs、npm 的路径;

  3. 若有 NVM_HOME、NVM_SYMLINK 等系统变量,直接删除。

验证删除

执行以下命令,若提示「不是内部或外部命令」则说明删除成功:

node -v
npm -v
nvm -v

2.nvm下载安装

  • 首先,下载一个安装包

nvm下载地址:nvm.uihtm.com/doc/downloa…

nvm1.png

  • 选择第一个 同意安装协议

nvm2.png

  • 选择安装目录,建议安装在D盘根目录

nvm3.png

  • 选择安装nodejs的目录,建议放在nvm下的nodejs

nvm4.png

  • 邮件订阅通知,可全部取消

nvm5.png

  • 订阅通知的邮箱,留空,可以不填

nvm6.png

  • 安装完成打开powershell

nvm7.png

  • 输入nvm -v查看是否有版本号输出。如果报错,尝试重开cmd后输入

nvm8.png

  • settings配置文件检查

nvm9.png

nvm10.png

  • 如果未有版本号输出,请手动添加到环境变量(可跳过)

nvm11.png

注意(重要!):一定要修改nvm文件夹, nodejs文件夹的属性,在“属性->安全”一栏中, 设置完全控制权限。如果权限不足,可能会导致使用时一些不可预料的问题发生

nvm15.png

3. 通过nvm,安装、管理node.js版本

安装指定node版本,切换版本并启用nvm

# 安装指定node版本
nvm install 22.15.0
  
# 使用指定版本
nvm use 22.15.0

# 打开nvm的版本控制
nvm on

此时node版本文件会下载到 \nvm 文件夹中,并生成nodejs文件

nvm16.png

查看当前版本

# 查看当前已下载的所有版本
nvm ls

(当前只下载了一个版本的nodejs)

nvm12.png

查看可用版本

# 查看可供使用的node版本
nvm ls available

这四列的区别: CURRENT(当前最新版本)、LTS(长期支持版本)、OLD STABLE(旧稳定版本)、OLD UNSTABLE(旧非稳定版本)。 点击其中底部连接可查看更全的版本信息 nvm13.png

安装新版本,切换版本

# 下载一个新版本
nvm install 20.20.0

# 使用这个新版本
nvm use 20.20.0

星号所在的版本位置,就是当前使用的node版本。从22版本,切换到了20版本 nvm14.png

4. 配置npm 缓存目录、npm 全局包安装目录 的环境变量(非必需,但强烈建议)

理由:

  nvm 切换版本后,无法使用前版本的全局包,因 npm 下载的全局包,只在对应的版本中

  缓存文件默认存在系统用户目录,Windows 下默认路径易触发权限问题(比如无法写入 C 盘用户目录)

配置流程

  1.  先在本地建两个文件夹(路径避免空格 / 中文 / 特殊字符)
    D:\nvm\node_prefix(全局包目录)、D:\nvm\node_cache(缓存目录)

nvm19.png

  1.  执行 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
# 打印结果为设置的路径
  1.  配置环境变量

    找到「Path」,点击「编辑」→「新建」,粘贴你的 prefix 目录

nvm17.png

    新增「NODE_PATH」变量,prefix 目录 + node_modules

nvm18.png

  补充:在新版 Node(v16+)中,NODE_PATH可以忽略。

  原因:Node(v16+)在正确配置 npm config set prefix 的前提下, Node 会自动把 prefix 目录下的 node_modules 加入模块查找路径,无需你再通过 NODE_PATH 重复指定。

  1.  检验是否成功
# 检查 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"

  1.  如果想恢复默认路径,但应该不会吧
npm config delete prefix

npm config delete cache

5. 更换镜像源

  1. npm 查看镜像源
npm config get registry
  1. npm 配置镜像源
npm config set registry https://registry.npmmirror.com
  1. 可用镜像源列表

恭喜,完成!

更多信息及常见问题:
www.nvmnode.com/zh/faq/
nvm.uihtm.com/doc/faqs.ht…

❌