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


当前回答

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

其他回答

如果我们使用当前的LTS版本的Node.js,那么这个错误将不会出现。将Node.js版本降级到当前的LTS版本(16.13.0)。

有多种方法可以安装所需的版本。其中之一是使用nvm (Node.js版本管理器)。

步骤1:安装nvm(如果没有安装,请使用节点版本管理器(nvm)在本地安装Node.js) 步骤2:nvm安装16.13.0(或lts)

您需要将反应脚本更新到最新版本

npm update react-scripts --save

Try:

npm create react-app --template typescript foo --use-npm

原因:

这个错误是因为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/

如果您在使用GatsbyJs时遇到此错误,您所需要做的就是将节点版本降级为长期支持。没有其他的拯救