解决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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?