一、需求背景
在前端项目开发过程中,不同项目所需的技术栈不同,也会导致基础依赖的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,但遗憾的是官方默认只提供了Linux
和Mac 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/
|