自学内容网 自学内容网

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

1、前言

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

2、详细问题

前端项目启动(npm run dev)和打包时(npm run build:prod)报出如下错误:

PS D:\work\code\html\store-ui> npm run dev                                       

> LS@3.8.5 dev
> vue-cli-service serve

 INFO  Starting development server...
95% emitting CompressionPlugin ERROR  Error: error:0308010C:digital envelope routines::unsupported
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:79:19)
    at Object.createHash (node:crypto:139:10)
    at D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:243:42
    at CompressionPlugin.compress (D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:284:9)
    at D:\work\code\html\store-ui\node_modules\compression-webpack-plugin\dist\index.js:305:12
    at _next1 (eval at create (D:\work\code\html\store-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:17)
    at eval (eval at create (D:\work\code\html\store-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:33:1)
    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(终端),输入:

 SET NODE_OPTIONS=--openssl-legacy-provider 

$env:NODE_OPTIONS="--openssl-legacy-provider"

3.3、在package.json命令里添加设置

在原有的命令上,增加【SET NODE_OPTIONS=–openssl-legacy-provider 】配置,使用&& 连接

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

4、效果

最后 npm run serve 重新运行项目即可
在这里插入图片描述


原文地址:https://blog.csdn.net/s445320/article/details/143568491

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!