Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案(三种)

文章介绍了在使用Win11系统和Node.jsV18时遇到的OpenSSL3.0错误,以及三种解决方案:降级Node.js版本、使用nvm进行版本管理、在package.json中添加配置参数。作者推荐使用nvm进行版本切换或在脚本中添加setNODE_OPTIONS=--openssl-legacy-provider来解决问题。
摘要由CSDN通过智能技术生成

        新换的电脑,系统装的win11,node也是18的版本。

        跑了一下老项目,我用的是HbuilderX,点击运行和发行时,都会报错:

        Error: error:0308010C:digital envelope routines::unsupported

        出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

        搜了一下网上大家的解决办法,主要解决方案有以下几种,但是我用的第二种,推荐第三种

        方法一:尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动

        效果:可行,但是我们不能经常这样,毕竟也要跟着node同进退,新项目也得用新node版本是吧。。。

        方法二:方法一的进阶(我用的)

        做法:安装nvm管理工具,可以同时在电脑中安装n套node版本,用的时候进行切换就好。

        具体安装可以参考下面的链接,小姐姐写的很详细:

        nvm管理node版本 - Coderz1 - 博客园 (cnblogs.com)

        需要注意的是:如果和我一样,使用nvm use xxx之后,执行node -v的时候就提示node不是内部语言时,是因为本身电脑里有node.js,导致在nvm创建node快捷方式的时候,和原文件夹名称一样冲突,结果导致没安装上。。所以遇到同样问题的小伙伴,把原来node.js咔咔卸载,顺便删除掉对应的文件夹,再执行一下nvm use xxx就好。

附一张该文章里的贴图:

        方法三:package.json增加配置(可行)

        代码:

"scripts": {
    "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
  },    

        这种方式其实很好,我这样更改了package.json之后,在命令行用npm run build 或者是 npm run serve 都可以正常走了,不会报错。

        但因为我们项目需要用HbuilderX编辑器上的运行和发行按钮来操作,据我分析,HbuilderX应该内部配置了相关的脚本,但我还没有找到在哪里,否则加上“set NODE_OPTIONS=--openssl-legacy-provider && ”应该用这种方法也可以轻松解决。

        所以如果是用控制台执行脚本来运行和打包,推荐第三种,而且可以在项目代码里维护好,也方便其他同事使用,别人用的时候就不会察觉到这个问题了。

参考链接:

(7条消息) Vue 报错error:0308010C:digital envelope routines::unsupported_柠檬果子青的博客-CSDN博客

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值