You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js v17中--openssl-legacy-provider参数的含义与作用是什么?

关于--openssl-legacy-provider参数的含义与运行原理

报错根本原因

Node.js v17及后续版本默认内置了OpenSSL 3.0,该版本的OpenSSL默认禁用了所有被判定为安全性不足的旧加密、哈希算法(包括MD4、MD5等)。
而旧版本的create-react-app底层依赖的webpack,在计算构建产物哈希值时默认调用MD4算法,OpenSSL 3.0不提供该算法的默认支持,因此抛出Error: error:0308010C:digital envelope routines::unsupported错误。

参数的实际作用与运行原理

--openssl-legacy-provider是Node.js专门为适配OpenSSL 3.0推出的启动参数,添加该参数后,Node.js进程启动时会主动加载OpenSSL的旧版本算法提供程序(legacy provider),重新启用所有被OpenSSL 3.0默认禁用的旧算法,以此兼容尚未适配OpenSSL 3.0的旧依赖的调用需求。
你将该参数加在craco指令前的写法,本质是给启动的Node.js进程传入了该兼容参数,后续craco调用webpack执行构建逻辑时,就能正常调用被重新启用的MD4算法,因此报错消失。

注意事项

  • 该参数仅在Node.js v17及以上版本生效,在v16及更低版本的Node.js环境中传入会触发「未知参数」报错
  • 该方案属于临时兼容手段,长期建议将项目的react-scripts依赖升级到v5.0.0及以上版本,新版create-react-app已默认将哈希算法替换为符合OpenSSL 3.0安全要求的SHA-256,无需额外添加参数即可正常启动构建

内容的提问来源于stack exchange,提问作者Meet Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:06:05