问题描述

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

报错原因

主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误。我的 node 版本是 v18+

解决方案

  • 试卸载 Node.js 17+ 版本并重新安装 Node.js 16+ 版本,然后再重新启动(个人觉得这只是缓兵之计,不推荐
  • 在项目中 package.json 的 scripts 中新增 SET NODE_OPTIONS=--openssl-legacy-provider。这个办法本人也试了,但是不起作用
1
2
3
4
"scripts": {
"serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "vue-cli-service build"
},
  • 在 MAC 本地配置 NODE_OPTIONS
    1. vim ~/.bash_profile:在 bash_profile 中添加 export NODE_OPTIONS=--openssl-legacy-provider
    2. source ~/.bash_profile