我创建了默认的IntelliJ IDEA React项目,并得到了这个:

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)
    at module.exports (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
/Users/user/Programming Documents/WebServer/untitled/node_modules/react-scripts/scripts/start.js:19
  throw err;
  ^

这似乎是最近才出现的问题——webpack在4天前遇到了这个问题,目前仍在处理。


当前回答

一些顶尖的答案并不奏效。

export NODE_OPTIONS=--openssl-legacy-provider

部分顶部答案不适用,修改包。json文件:

"start": "react-scripts --openssl-legacy-provider start"

这是由最新的node.js V17与OpenSSL兼容问题引起的,请参阅GitHub上的这个问题。

最简单的方法是从node.js V17降级到node.js V16。关于如何降级node.js,请参阅这篇文章。

其他回答

作为一个2022年的读者,没有一个答案说明这个问题在Webpack 5用户的早期被修复了(但没有反向移植到Webpack 4)。如果你是Webpack 5,只需升级到至少5.61.0。请参阅此处关于跟踪此问题的线程的评论。

临时解决方案如下。实际的解决方案是升级到Webpack 5。

2022年12月更新

这对我来说很管用(降级到Node.js 16):

nvm install 16 --lts
nvm use 16

使用Node.js版本管理器(Windows)。

在你更改npm版本或进行任何配置更改之前,只需运行npm update将你的包更新到最新的小版本。

这为我解决了问题。

构造变压器失败:错误:错误:0308010C:数字信封例程::不支持

解决上述错误的最简单和最简单的解决方案是将Node.js降级到v14.18.1。然后只需删除文件夹node_modules,并尝试重新构建项目,您的错误必须解决。

原因:

这个错误是因为node.js 17/18使用了OpenSSL3,它改变了md族(包括md4)初始化上下文的代码,这是一个突破性的变化。 如果你使用docker build构建应用程序,也会出现这个错误,因为它默认会提取最新版本的Node.JS。

安装节点版本管理器或nvm

curl 'https://raw.githubusercontent.com/creationix/nvm/master/install.sh' | bash;

安装最新LTS版本:

nvm install --lts;

使用LTS版本:

nvm use --lts;

完成了!

来源:https://itsmycode.com/error-digital-envelope-routines-unsupported/