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 file
use Use any the local already exists of Node.js version
ls Show all [local] [remote] Node.js version
install Install any Node.js version
uninstall Uninstall local Node.js version and npm
update Update Node.js latest version
npm NPM version management
session Set any local Node.js version to session Node.js version
search Search and Print Node.js version detail usage wildcard mode or regexp mode
node-version Show [global] [latest] Node.js version
reg Add config property [noderoot] to Environment variable [NODE_HOME]
version Print GNVM version number
help [command] Help about any command
Available Flags:
--help=false: help for gnvm
Use "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.2
2 2025-02-26 23.9.0 x86 x64 10.9.2
3 2025-02-13 23.8.0 x86 x64 10.9.2
4 2025-01-30 23.7.0 x86 x64 10.9.2
5 2025-01-21 23.6.1 x86 x64 10.9.2
6 2025-01-07 23.6.0 x86 x64 10.9.2
7 2024-12-19 23.5.0 x86 x64 10.9.2
8 2024-12-10 23.4.0 x86 x64 10.9.2
9 2024-11-20 23.3.0 x86 x64 10.9.0
10 2024-11-11 23.2.0 x86 x64 10.9.0
11 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.2
2 2025-02-10 20.18.3 x86 x64 10.8.2
3 2025-01-21 20.18.2 x86 x64 10.8.2
4 2024-11-20 20.18.1 x86 x64 10.8.2
5 2024-10-03 20.18.0 x86 x64 10.8.2
6 2024-08-21 20.17.0 x86 x64 10.8.2
7 2024-07-24 20.16.0 x86 x64 10.8.1
8 2024-07-08 20.15.1 x86 x64 10.7.0
9 2024-06-20 20.15.0 x86 x64 10.7.0
10 2024-05-28 20.14.0 x86 x64 10.7.0
11 2024-05-09 20.13.1 x86 x64 10.5.2
12 2024-05-07 20.13.0 x86 x64 10.5.2
13 2024-04-10 20.12.2 x86 x64 10.5.0
14 2024-04-03 20.12.1 x86 x64 10.5.0
15 2024-03-26 20.12.0 x86 x64 10.5.0
16 2024-02-13 20.11.1 x86 x64 10.2.4
17 2024-01-09 20.11.0 x86 x64 10.2.4
18 2023-11-22 20.10.0 x86 x64 10.2.3
19 2023-10-24 20.9.0 x86 x64 10.1.0
20 2023-10-13 20.8.1 x86 x64 10.1.0
21 2023-09-28 20.8.0 x86 x64 10.1.0
22 2023-09-18 20.7.0 x86 x64 10.1.0
23 2023-09-07 20.6.1 x86 x64 9.8.1
24 2023-08-23 20.6.0 x86 x64 9.8.1
25 2023-08-09 20.5.1 x86 x64 9.8.0
26 2023-07-19 20.5.0 x86 x64 9.8.0
27 2023-07-04 20.4.0 x86 x64 9.7.2
28 2023-06-20 20.3.1 x86 x64 9.6.7
29 2023-06-08 20.3.0 x86 x64 9.6.7
30 2023-05-16 20.2.0 x86 x64 9.6.6
31 2023-05-03 20.1.0 x86 x64 9.6.4
32 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版本,这样就可以直接运行了。