解决Error: error:0308010C:digital envelope routines::unsupported的四种解决方案
问题描述: 前端项目自定义webpack自动构建项目,启动时报错:Error: error:0308010C:digital envelope routines::unsupported
报错原因:
主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误。 我的node版本是v18+
报错详细信息:
Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at filename (E:\roof\cobase_webclient\node_modules\babel-loader\lib\fs-cache.js:76:21) at E:\roof\cobase_webclient\node_modules\babel-loader\lib\fs-cache.js:107:37 at E:\roof\cobase_webclient\node_modules\mkdirp\index.js:51:26 at FSReqCallback.oncomplete (node:fs:209:5) { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } Node.js v18.16.1
解决方案: (在不改变代码的情况下,可采用设置NODE_OPTIONS全局环境变量)
方案1:打开IDEA 终端,直接输入
Linux & Mac OS:export NODE_OPTIONS=--openssl-legacy-provider
Windows:set NODE_OPTIONS=--openssl-legacy-provider
也可手动操作:此电脑->右键(属性)-> 高级系统设置->环境变量->系统变量->新建NODE_OPTIONS:--openssl-legacy-provider; 如果重新启动项目未生效,重新启动电脑试一下。
方案2:打开IDEA 终端,直接输入(问题解决)
$env:NODE_OPTIONS="--openssl-legacy-provider"
方案3:卸载当前版本,安装合适的版本(node.js)
方案4:
解决方式(仅限 windows):
在项目中 package.json 的 scripts 中新增 SET NODE_OPTIONS=--openssl-legacy-provider
添加前:
"scripts": { "server": "webpack-dev-server --env.server --env.develop --inline --max-old-space-size=3000", . . }
添加后:
"scripts": { "server": "SET NODE_OPTIONS=--openssl-legacy-provider && webpack-dev-server --env.server --env.develop --inline --max-old-space-size=3000", . . }
原文链接:https://blog.csdn.net/scholar_man/article/details/134491200