1. gnvm下载官网
GNVM - Node.js version manager on Windows by Go
2. 安装
2.1 不存在 Node.js 环境
下载并解压缩 gnvm.exe 保存到任意文件夹,并将此文件夹加入到环境变量 Path。
2.2 存在 Node.js 环境
下载并解压缩 gnvm.exe 保存到 Node.js 所在的文件夹。
2.3 查看 Node.js 文件地址
C:\Users\my_name>where node
C:\Program Files\nodejs\node.exe
3. 使用 gnvm
3.1 查看所有命令及说明
C:\Users\my_name>gnvm -h
Usage of gnvm:Usage:gnvm [flags]gnvm [command]Available Commands:config Setter and getter .gnvmrc fileuse Use any the local already exists of Node.js versionls Show all [local] [remote] Node.js versioninstall Install any Node.js versionuninstall Uninstall local Node.js version and npmupdate Update Node.js latest versionnpm NPM version managementsession Set any local Node.js version to session Node.js versionsearch Search and Print Node.js version detail usage wildcard mode or regexp modenode-version Show [global] [latest] Node.js versionreg Add config property [noderoot] to Environment variable [NODE_HOME]version Print GNVM version numberhelp [command] Help about any commandAvailable Flags:--help=false: help for gnvmUse "gnvm help [command]" for more information about that command.
3.2 安装指定 node 版本
C:\Users\my_name>gnvm install 22.8.0
Start download Node.js versions [22.8.0].
22.8.0: 100% [==================================================>] 3s
--------
End download.
3.3 查看已下载的nodejs版本
v20.5.0 -- global 为当前使用的node版本
C:\Users\my_name>gnvm ls
Notice: gnvm.exe root is C:\Program Files\nodejs\\
v16.13.1
v16.13.1 -- x86
v20.5.0 -- global
v20.5.0 -- x86
v22.8.0
3.4 切换 node.js 版本(切换时不能运行项目)
C:\Users\my_name>gnvm use 20.5.0
Set success, global Node.js version is 20.5.0.# 查看node版本
C:\Users\my_name>node -v
v20.5.0
3.5 搜索当前可安装的node和npm版本(两者成对应关系)
C:\Users\my_name>gnvm search *.*.*
Search Node.js version rules [*.*.*] from http://npm.taobao.org/mirrors/node/index.json, please wait.
Error: 'gnvm search' get url http://npm.taobao.org/mirrors/node/index.json error, Error: Error: util/print.go an error has occurred. Error: interface conversion: interface is curl.CurlError, not string
发现报错,查不出来
3.5.1 尝试更换为淘宝镜像地址
# 尝试更换为淘宝镜像地址
C:\Users\my_name>gnvm config registry TAOBAO
Set success, registry new value is http://npm.taobao.org/mirrors/node/C:\Users\my_name>npm config get registry
https://registry.npmmirror.com/# 还是查不出来
C:\Users\my_name>gnvm search *.*.*
Search Node.js version rules [*.*.*] from http://npm.taobao.org/mirrors/node/index.json, please wait.
Error: 'gnvm search' get url http://npm.taobao.org/mirrors/node/index.json error, Error: Error: util/print.go an error has occurred. Error: interface conversion: interface is curl.CurlError, not string
3.5.2 如果淘宝镜像出现问题,那么更换默认地址
C:\Users\14249>gnvm config registry DEFAULT
Set success, registry new value is http://nodejs.org/dist/C:\Users\14249>npm config get registry
https://registry.npmmirror.com/C:\Users\14249>gnvm search *.*.*
Search Node.js version rules [*.*.*] from http://nodejs.org/dist/index.json, please wait.
+--------------------------------------------------+
| No. date node ver exec npm ver |
+--------------------------------------------------+1 2025-03-13 23.10.0 x86 x64 10.9.22 2025-02-26 23.9.0 x86 x64 10.9.23 2025-02-13 23.8.0 x86 x64 10.9.24 2025-01-30 23.7.0 x86 x64 10.9.25 2025-01-21 23.6.1 x86 x64 10.9.26 2025-01-07 23.6.0 x86 x64 10.9.27 2024-12-19 23.5.0 x86 x64 10.9.28 2024-12-10 23.4.0 x86 x64 10.9.29 2024-11-20 23.3.0 x86 x64 10.9.010 2024-11-11 23.2.0 x86 x64 10.9.011 2024-10-24 23.1.0 x86 x64 10.9.0
3.6 查看指定版本的node与npm对应版本
C:\Users\my_name>gnvm search 20.*.*
Search Node.js version rules [20.*.*] from http://nodejs.org/dist/index.json, please wait.
+--------------------------------------------------+
| No. date node ver exec npm ver |
+--------------------------------------------------+1 2025-03-13 20.19.0 x86 x64 10.8.22 2025-02-10 20.18.3 x86 x64 10.8.23 2025-01-21 20.18.2 x86 x64 10.8.24 2024-11-20 20.18.1 x86 x64 10.8.25 2024-10-03 20.18.0 x86 x64 10.8.26 2024-08-21 20.17.0 x86 x64 10.8.27 2024-07-24 20.16.0 x86 x64 10.8.18 2024-07-08 20.15.1 x86 x64 10.7.09 2024-06-20 20.15.0 x86 x64 10.7.010 2024-05-28 20.14.0 x86 x64 10.7.011 2024-05-09 20.13.1 x86 x64 10.5.212 2024-05-07 20.13.0 x86 x64 10.5.213 2024-04-10 20.12.2 x86 x64 10.5.014 2024-04-03 20.12.1 x86 x64 10.5.015 2024-03-26 20.12.0 x86 x64 10.5.016 2024-02-13 20.11.1 x86 x64 10.2.417 2024-01-09 20.11.0 x86 x64 10.2.418 2023-11-22 20.10.0 x86 x64 10.2.319 2023-10-24 20.9.0 x86 x64 10.1.020 2023-10-13 20.8.1 x86 x64 10.1.021 2023-09-28 20.8.0 x86 x64 10.1.022 2023-09-18 20.7.0 x86 x64 10.1.023 2023-09-07 20.6.1 x86 x64 9.8.124 2023-08-23 20.6.0 x86 x64 9.8.125 2023-08-09 20.5.1 x86 x64 9.8.026 2023-07-19 20.5.0 x86 x64 9.8.027 2023-07-04 20.4.0 x86 x64 9.7.228 2023-06-20 20.3.1 x86 x64 9.6.729 2023-06-08 20.3.0 x86 x64 9.6.730 2023-05-16 20.2.0 x86 x64 9.6.631 2023-05-03 20.1.0 x86 x64 9.6.432 2023-04-17 20.0.0 x86 x64 9.6.4
+--------------------------------------------------+
3.7 查看具体版本的node与npm对应版本
C:\Users\my_name>gnvm search 20.6.1
Search Node.js version rules [20.6.1] from http://nodejs.org/dist/index.json, please wait.
+--------------------------------------------------+
| No. date node ver exec npm ver |
+--------------------------------------------------+1 2023-09-07 20.6.1 x86 x64 9.8.1
+--------------------------------------------------+
4. 切换 node 版本后项目无法运行
4.1 原因
网上查询到原因为node.js 的版本问题
因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。
1. 推荐:修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider
"scripts": {"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve","build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},
这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。
2. 当次运行的命令窗口有效:在你当前文件的cmd命令窗口输入:SET NODE_OPTIONS=--openssl-legacy-provider, 回车后输入 npm 运行命令
这种做法,就是每次运行都要输入SET NODE_OPTIONS=--openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。
3.就是nodejs版本回退到16版本,这样就可以直接运行了。