nvm(node多版本)管理工具使用教程

一、需求背景

在前端项目开发过程中,不同项目所需的技术栈不同,也会导致基础依赖的node版本存在差异。windows环境默认只能安装一个node版本,切换node版本通常需要卸载重装,执行降级操作比较麻烦。

例如A项目使用了nuxt.js,最低node版本为16.11.0;而B项目仅需要14.17.6。当把node版本升级到16以上时,B项目就会产生 Error: error:0308010C:digital envelope routines::unsupported报错(因为16往上的版本默认集成了OpenSSL3.0,而OpenSSL3.0对算法和密钥大小增加了严格限制);当降级到14.17.6时,nuxt.js就会因为node版本过低而无法运行。

此时就迫切需要一款工具来解决频繁卸载安装Node版本的操作问题,这里就说到了本次的主角——“nvm”。

二、nvm介绍

nvm允许用户通过命令行快速安装和使用不同版本的nodejs,但遗憾的是官方默认只提供了LinuxMac OS X系统的支持。

项目网址:https://github.com/nvm-sh/nvm

三、nvm-windows安装教程

好在windows平台有一款名叫nvm-windows的node版本管理器,也可以实现nvm相同的功能。

项目官网:https://github.com/coreybutler/nvm-windows

(1)下载Windows安装包

访问下载最新版本的安装包(选择nvm-setup.zip

(2)解压压缩包,运行安装文件

1、选择『I accept the agreement』,点击『Next』

2、选择安装路径,点击『Next』

3、设置node安装路径,点击『Next』

4、点击『Install』安装

5、点击『Finishl』完成安装

6、在cmd命令行窗口输入nvm -v,验证是否安装成功

四、nvm使用教程

(1)安装node版本

命令格式:nvm install 版本号
效果示例:

(2)查看已安装的node列表

命令格式:nvm ls
效果示例:

(3)切换使用的版本

命令格式:nvm use 版本号
效果示例:

可以再运行nvm ls来验证当前激活的node版本

(4)卸载node版本

命令格式:nvm uninstall 版本号
效果示例:

五、nvm常见问题

(1)运行npm命令提示npm未安装

有时候安装指定node版本时,对应的npm版本可能会下载失败,此时重新执行卸载、安装步骤即可解决问题。

(2)运行npm命令报错npm : 无法加载文件 C:\Users\xujiao\AppData\Roaming\npm\npm.ps1,因为在此系统上禁止运行脚本。

1、以管理员身份打开命令行

2、执行set-ExecutionPolicy RemoteSigned命令

3、输入y,按下回车

4、运行命令get-ExecutionPolicy查看结果

5、此时再执行npm命令,即可正常执行

六、附录1:nvm命令列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 展示node运行环境
nvm arch

# 展示当前使用的node版本
nvm current

# 安装对应node版本
nvm install <version> [arch]

# 展示当前可用的node版本
nvm list [available]

# 启用nvm包管理(启用禁用不影响node环境运行)
nvm on

# 禁用nvm包管理(启用禁用不影响node环境运行)
nvm off

# 设置代理下载地址
nvm proxy [url]

# 设置node镜像节点地址
nvm node_mirror [url]

# 设置npm镜像节点地址
nvm npm_mirror [url]

# 卸载对应node版本
nvm uninstall <version>

# 切换使用的node版本
nvm use [version] [arch]

# 设置nvm的node.js存储目录
nvm root [path]

# 展示当前nvm版本
nvm [--]version

七、附录2:镜像加速设置

1、where nvm 找到nvm安装路径
2、找到settings.txt文件

3、将下面这两句话复制到settings.txt,并保存

1
2
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/

评论区