文章目录
- 问题
- 原因
- 解决方法
- 方法一
- 方法二
问题
运行vue项目,报错 error:0308010C:digital envelope routines::unsupported
原因
网上查了一下,大体原因就是node版本不对,node版本太高
也有说我没有使用 Node JS 的 LTS(长期支持)版本。
我本地使用的是 Node 17.0.0,这确实不是 Node 的 LTS 版本。
解决方法
推荐使用第二种解决方法,要方便一点,不用切换node版本,也不用安装其他软件
方法一
切换node版本
可以用nvm来管理不同版本的node
nvm仓库
https://github.com/coreybutler/nvm-windows/releases
下载安装自己电脑对应的node版本即可
安装完成配置好环境变量输入以下命令就可以判断是否安装成功
nvm -v
然后就可以使用命令安装项目需要版本的node了
我项目需要的node版本较低所以我安装了12.22.12,大家根据需要自行安装即可
nvm install 12.22.12
安装完成后,运行如下命令查看是否安装成功
nvm list
此命令会把本地安装的node版本都显示出来
可以看到我本地安装了3个版本的node,目前正在使用的版本是17.0.0
之后我们可以用以下命令切换node版本
nvm use 12.22.12
切换完成后我们可以查看当前的版本是否更改
node -v
此时我们的node版本已经更换完成,重新尝试运行项目
项目成功运行,问题解决
方法二
先把环境设置为报错的环境node17.0.1
尝试运行项目
毫无疑问报错了
要通过不更换node版本的方法解决这个问题,我们就只需要在项目启动命令前面加上以下命令即可
具体位置就是在package.json中scripts下面
//linux & mac:
NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve
//windows:
set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve
这个命令就是在运行项目之前设置一个环境变量NODE_OPTIONS,它的值为–openssl-legacy-
provider,之后在运行后面的命令来启动项目
具体来说,NODE_OPTIONS是node提供的一个环境变量,可以用来设置一些node项目运行时的选项,在这个项目中这个选项的作用时告诉node使用旧版本的openssl程序
此时我们再去运行项目
没有任何报错,问题成功解决
完结!