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

张春  金牌会员 | 2024-11-29 10:28:55 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

1、前言

2024年11月某一天,升级了电脑上的nodejs版本:v22.11.0。
原来运行正常的Vue项目,在运行时突然就报错:Error: error:0308010C:digital envelope routines::unsupported
2、详细题目

前端项目启动(npm run dev)和打包时(npm run build:prod)报出如下错误:
  1. PS D:\work\code\html\store-ui> npm run dev                                       
  2. > LS@3.8.5 dev
  3. > vue-cli-service serve
  4. INFO  Starting development server...
  5. 95% emitting CompressionPlugin ERROR  Error: error:0308010C:digital envelope routines::unsupported
  6. Error: error:0308010C:digital envelope routines::unsupported
  7.     at new Hash (node:internal/crypto/hash:79:19)
  8.     at Object.createHash (node:crypto:139:10)
  9.     at D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:243:42
  10.     at CompressionPlugin.compress (D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:284:9)
  11.     at D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:305:12
  12.     at _next1 (eval at create (D:\work\code\html\store-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:17)
  13.     at eval (eval at create (D:\work\code\html\store-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:33:1)
  14.     at D:\work\code\html\store-ui\node_modules\copy-webpack-plugin\dist\index.js:91:9
复制代码
题目重点在【 at new Hash (node:internal/crypto/hash:79:19)
at Object.createHash (node:crypto:139:10)】这两行,创建hash失败。
重要是Node.js 17 引入了对 OpenSSL 3.0 的支持,该版本对于一些 API 进行了重大更改,这大概导致与某些 Node.js 库或依赖项的不兼容。
因此我们可选择将nodejs版本回退到17以下,好比16、13、10等。
3、解决方法



  • nodejs版本降级
  • 针对openssl设置环境变量
3.1、nodejs版本降级

我的电脑当前版本是v22,可以降级到16及以下版本,正好是windows电脑,可以在体系变量里修改nodejs的路径配置(当然也可以使用nvm来切换版本)。



3.2、针对openssl设置环境变量

windows电脑上,在Idea打开一个Terminal(终端),输入:
  1. SET NODE_OPTIONS=--openssl-legacy-provider
复制代码

  1. $env:NODE_OPTIONS="--openssl-legacy-provider"
复制代码
3.3、在package.json命令里添加设置

在原有的命令上,增加【SET NODE_OPTIONS=–openssl-legacy-provider 】配置,使用&& 毗连
  1.   "scripts": {
  2.     "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
  3.     "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
  4.   }
复制代码
4、效果

末了 npm run dev 重新运行项目即可


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表