因为需要申请专利,我打开了公司2年前的项目,运行发现报错Error: error:0308010C:digital envelope routines::unsupported,百度之后发现是因为nodejs17以上加了个OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 版本可能会抛出这个异常。
解决方案:1、降级,2、配置参数
第二套方案在我之前写的文章中有配置
这个方案治标不治本,所以我这次选择了降级。但是单纯降级会导致其他问题,比如node包装不了,有些项目运行不起来。所以我决定采用nvm管理器,管理nodejs版本。
安装流程:
一、卸载自己用的nodejs(卸载前最好记住版本号)
打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载
为了确保彻底删除node在看看你的node安装目录中还有没有node文件夹,有的话一起删除。再看看C:\Users\用户名 文件夹下有没有.npmrc以及.yarnrc等等统统删除。再去看看你的环境变量有没有node相关的,有的话也一起删除了。
二、安装nvm
点击安装,一路next就行,记得要记住nvm和nodejs的安装位置
打开cmd,输入nvm -v查看是否有版本号,有则安装成功
三、配置淘宝源
找到nvm安装路径 -> 找到 settings.txt 文件 -> 配置下载源
root:C:\Users\admin\AppData\Roaming\nvm(nvm的安装位置)
path:C:\Program Files\nodejs(nodejs安装位置)
arch: 64(系统位数)
proxy: none
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/四、接下来就是我遇到的问题
前面安装一路都没问题,我就继续安装不同版本的nodejs了,结果安装后nvm list能显示不同版本号,但是nvm use无法切换版本。
在百度搜索过后发现是nodejs的位置问题,所以接下来要换一种安装方式:
1.打开nvm的安装路径, 我的是:C:\Users\admin\AppData\Roaming\nvm,在这路径下新建一个空的文件夹,名称 nodejs,文件夹下面不要放任何东西,保持为空即可。
2.打开环境变量,修改用户环境变量和系统环境变量,修改两个NVM_SYMLINK的值为:C:\Users\admin\AppData\Roaming\nvm\nodejs,确定-确定-确定。
3.关闭之前打开的所有cmd(包括vscode),并重新打开cmd:
nvm uninstall v10.21.0 卸载掉之前安装的node,重新安装nvm intall 22.1.0 64-bit (安装的时候最后后面带上多少位版本)
4.根据自己需要切换版本,至此我切换成功,也成功运行了旧代码
额外知识:nvm的操作命令
| 命令 | 说明 |
|---|---|
| nvm list | 查看已经安装的版本 |
| nvm list installed | 查看已经安装的版本 |
| nvm list available | 查看网络可以安装的版本 |
| nvm arch | 查看当前系统的位数和当前nodejs的位数 |
| nvm install [arch] | 安装制定版本的node 并且可以指定平台 version 版本号 arch 平台 |
| nvm on | 打开nodejs版本控制 |
| nvm off | 关闭nodejs版本控制 |
| nvm proxy [url] | 查看和设置代理 |
| nvm node_mirror [url] | 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/ |
| nvm npm_mirror [url] | 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是:https://github.com/npm/npm/archive/. |
| nvm uninstall | 卸载指定的版本 |
| nvm use [version] [arch] | 切换指定的node版本和位数 |
| nvm root [path] | 设置和查看root路径 |
| nvm version | 查看当前的版本 |