我创建了默认的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天前遇到了这个问题,目前仍在处理。


当前回答

在Windows上,通过卸载openssl 1.1.1,安装openssl 3(如果你使用chocolatey: choco install openssl.light),并将Angular更新到最新版本(目前为14),解决了上述webpack配置问题。

当然,正如大多数答案所建议的那样,降级Node并不是一个正确的方法。

其他回答

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

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,请参阅这篇文章。

它是Node.js版本。

我在Node.js 17上有这个错误,但当我使用nvm将我的Node.js版本切换到旧版本(16)时,它是好的。

我也犯了同样的错误。

我的情况:

安装了新的react typescript应用程序,添加了一些scss和一些组件。

在本地我的构建是工作的,但当我试图发布它失败与错误:

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

我通过将react-script库更新到5.0.1来修复这个问题

"react-scripts": "^5.0.1",

当我用nvm更改节点版本时,我也遇到了同样的问题。如果Ypu在你的项目中使用sass,请尝试:

Sudo NPM重建node-sass

我在GitHub上找到了以下命令:

对于Windows,在cmd中使用以下命令:

set NODE_OPTIONS=--openssl-legacy-provider

对于Unix,使用:

export NODE_OPTIONS=--openssl-legacy-provider