GNVM - Node.js version manager on Windows by Go
下载并解压缩 gnvm.exe 保存到任意文件夹,并将此文件夹加入到环境变量 Path。
下载并解压缩 gnvm.exe 保存到 Node.js 所在的文件夹。
C:\Users\my_name>where node
C:\Program Files\nodejs\node.exe
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.
C:\Users\my_name>gnvm install 22.8.0
Start download Node.js versions [22.8.0].
22.8.0: 100% [==================================================>] 3s
--------
End download.
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
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
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
发现报错,查不出来
# 尝试更换为淘宝镜像地址
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
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
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
+--------------------------------------------------+
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
+--------------------------------------------------+
网上查询到原因为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版本,这样就可以直接运行了。