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

 新换的电脑,系统装的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 && ”应该用这种方法也可以轻松解决。

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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农汉子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值