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

回答 44 浏览 91.4万 2021-10-23

我创建了默认的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天前就遇到了这个问题,目前仍在努力解决

a1cd 提问于2021-10-23
该问题链接中提到的解决方法对你来说有用吗?Mike 'Pomax' Kamermans 2021-10-23
我在使用next js时得到了同样的错误,我降级了我的node版本,现在那个错误不会再出现了。migara 2021-10-24
是的,有吗?github.com/webpack/webpack/issues/14532#issuecomment-947012063是6天前发布的(此后有很多人追问到底如何使用,有几个人做了很多解释)。Mike 'Pomax' Kamermans 2021-10-25
使用Node的LTS版本(V16)而不是V17,为我们解决了这个问题。Janac Meena 2021-12-27
如果你是在NodeJS v18.x上遇到这个错误,原因是一样的。有关原因的详细信息,请参见web.archive.org/web/20220412174915/https://nodejs.org/api/…,并按照说明启用OpenSSL遗留提供程序web.archive.org/web/20220416014625/https://nodejs.org/api/…Drazisil 2022-04-28
44 个回答
#1楼
得票数 1146

现在有两个选择---

1.尝试卸载Node.js 17+版本并重新安装Node.js 16+版本

2.打开终端,按所述粘贴这些内容。

Linux和macOS (Windows Git Bash)-

export NODE_OPTIONS=--openssl-legacy-provider

Windows命令提示符---

set NODE_OPTIONS=--openssl-legacy-provider

Windows PowerShell-

$env:NODE_OPTIONS = "--openssl-legacy-provider"

参考链接

Ajoy Karmakar 提问于2021-10-24
ggorlen 修改于2022-09-21
我应该把这个放在哪里呢?a1cd 2021-10-25
对我来说,这个命令是失败的 /usr/local/Cellar/node/17.0.1/bin/node: --openssl-legacy-provider is not allowed in NODE_OPTIONSBen Winding 2021-11-13
不建议使用这种解决方案,请尝试卸载Node.js 17+版本,并重新安装Node.js 16+版本。Abdul Basit Rishi 2021-11-24
做了 set NODE_OPTIONS=--openssl-legacy-provider 它给出了同样的错误。Zeeshan Ahmad Khalil 2021-11-25
降级到16.13.0是不够的,它仍然不会让你使用--openssl-legacy-provider。要使用这个参数,你必须在v17及以上版本,而且这个参数必须放在你的package.json里面,出于安全考虑,它不允许你只把它放在NODE_OPTIONS环境变量中。然后它仍然不能工作。随着越来越多的人进入v16 LTS,这只会成为一个更大的问题,因为很多项目仍然依赖于Webpack 4。Maxim Therrien 2022-02-27
#2楼 已采纳
得票数 517

在你的package.json中:改变这一行

"start": "react-scripts start"

"start": "react-scripts --openssl-legacy-provider start"
Srujan 提问于2021-10-25
a1cd 修改于2021-10-26
但请注意,--openssl-legacy-provider意味着你现在几乎肯定是使用已知的不安全SSL运行,所以这可能会减轻症状,但它可能不会解决根本问题。Mike 'Pomax' Kamermans 2021-10-25
但是,这在运行localhost时是可以接受的。在新发布的VS 2022中,从头开始一个react-app,让VS 2022为你创建一个自签名的证书,仍然会导致样本项目崩溃。当使用NPM命令行"npx create-react-app react-core-test"从头开始创建一个react-project时也会出现这个问题。我在运行于Windows 10和Windows 11的两个不同环境中测试了这个问题。Thomas Williams 2021-12-03
见Ashok的回答。这是保持SSL工作无漏洞的正确解决方案,它对我来说很有效。Skystrider 2021-12-06
我不理解这样的暗示,即在某种程度上,使用节点16和openssl 1.x会比使用节点17和openssl 3的传统模式更安全。OpenSSL在v3中做了一些更严格的规定,你要么以一种方式击败这个限制,要么以另一种方式击败。这两种方法可能同样不安全。kojiro 2021-12-08
nodejs.org/en/blog/release/v17.0.0Stephane 2022-01-06
#3楼
得票数 237

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

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

Ashok Bhobhiya 提问于2021-10-27
Ashok Bhobhiya 修改于2022-02-01
但是......为什么新版本与旧代码不兼容? Node是世界上最大的编程工具之一,他们不会只创建一个不向后兼容的Nodejs新版本(我想他们会的,因为他们做了,但你会明白我的意思)。a1cd 2021-10-31
强行降级Emmac 2021-11-12
始终使用LTS进行真正的应用,它修复了这个问题。Krishnadas PC 2021-11-20
16年之后的新LTS是否应该恢复到旧SSL?我假设问题还是一样的,只是推迟到以后,而使用LTS 16是一个临时的解决方案。trusktr 2021-12-21
从今天起,Node 18.12.0是LTS,所以我认为降级不再是一个有效的策略了 :-(Arek 2022-10-26
#4楼
得票数 229

危险的是

这个问题有30多个答案,大多数建议将Node.js降级到v17之前,或者使用传统的SSL提供程序。这两种解决方案都是黑客,使你的构建受到安全威胁

出错的原因

在Node.js v17中,Node.js开发者关闭了SSL提供者中的一个安全漏洞。这个修复是一个破坏性的变化,与NPM中SSL包的类似破坏性变化相对应。当你试图在Node.js v17或更高版本中使用SSL,而不同时升级你package.json中的那些SSL包时,那么你会看到这个错误。

正确的(安全的)解决方案

使用最新版本的Node.js,同时使用最新的安全补丁的软件包。

对许多人来说,下面的命令可以解决这个问题。

npm audit fix --force

然而,请注意,对于复杂的构建,上述命令将拉入破坏性的安全修复,这可能潜在地破坏你的构建。

一个不那么强硬的(也是正确的)解决方案

在你的Webpack配置中,设置以下其中一项。

A.设置output.hashFunction = 'xxhash64'
B.设置experiments.futureDefaults = true

请看更多信息在格雷格的回答中

David 提问于2022-07-18
David 修改于2022-09-27
npm audit fix --force是唯一对我有效的方法,但我也不得不先升级我项目中的所有软件包依赖。nodejs.dev/en/learn/…Luke Hutchison 2022-09-08
我无法运行npm audit fix,因为我使用的代理不支持它。另一种方法是进行npm audit --regsitry=https://resgistry.npmjs.org,并手动检查软件包以找到违规者(在我的例子中是elliptic)。寻找Use of a Broken or Risky Cryptographic Algorithm。然后手动将该软件包更新为非违规的版本。MichaelM 2022-09-16
@vanowm,audit fix --force升级软件包的方式比普通的升级方式更强硬。--force标志甚至可以升级破坏性的变化,这正是我们许多(也许是大多数)有这种问题的人需要解决的问题(除非使用Greg的答案中提到的不那么严厉的选项)。David 2022-10-09
谢谢你提供了真正理智的答案,大卫。我对建议降级节点的答案数量感到震惊。Carson McManus 2022-11-02
@JuliusGoddard,我同意。我只是在学习React,跟随一个3个月前发布的课程(所以相对来说是最新的)。我不知道这一切是怎么回事。但是我在运行npm audit fix --force之前有72个审计错误,运行之后也有72个错误。没有什么是固定的。当我试图将output.hashFunction = 'xxhash64'添加到我的webpack.config.js文件中时(不容易找到,BTW),我收到了这个错误信息。(node:12080) [DEP0111] DeprecationWarning: Access to process.binding('http_parser') is deprecated. ... output is not definedTodd Hoatson 2022-12-22
#5楼
得票数 66

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

export NODE_OPTIONS=--openssl-legacy-provider

而一些顶级的答案是不适用的,修改package.json文件。

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

这是由node.js V17OpenSSL的最新兼容问题引起的,见GitHub上的这个问题和这个问题。

最简单的是将node.js V17降级为node.js V16。请看这个帖子关于如何降级node.js

Gary Bao 鲍昱彤 提问于2021-12-07
Gary Bao 鲍昱彤 修改于2022-01-02
确认将版本降级到V.16后,问题得到了解决。nvm install v16 && nvm alias default v16 && nvm use v16 .Manuel Lazo 2021-12-16
从v17降级到v16可以解决这个问题。onmyway133 2022-01-07
是的,这个解决方案非常有效。我的工作站使用的是V17,面临这个问题。而我的GitHub行动中的同一个package.json使用V16,这个错误没有发生。谢谢!Saravanan G 2022-01-17
降级并不是一个好的选择Dee 2022-10-28
#6楼
得票数 62

这是Node.js的版本。

我在Node.js 17上有这个错误,但当我用nvm把我的Node.js版本切换到旧版本(16)时,它就正常了。

davychhouk 提问于2021-10-31
Heretic Monkey 修改于2021-12-01
我也一样。恢复到节点16解决了这个问题。sam 2021-11-05
是的。刚才在尝试运行硬帽测试时遇到了,很想听听什么原因造成的故障。Kyle Baker 2021-11-24
你是对的,把npm的版本回滚到16.13.x,就成功了!Shivang Chaturvedi 2021-12-05
如果你使用软件包管理器Chocolatey,你可以只用choco uninstall nodejschoco install nodejs-lts来安装LTS版本的node。Matthias T 2021-12-16
不知何故,这个错误也发生在我的node v16上...Yarycka 2022-01-05
#7楼
得票数 50

我在GitHub上找到了下面的命令。

对于Windows,在cmd中使用下面的命令。

set NODE_OPTIONS=--openssl-legacy-provider

对于Unix,请使用。

export NODE_OPTIONS=--openssl-legacy-provider
Ritesh Kumar 提问于2021-11-03
Peter Mortensen 修改于2021-11-15
谢谢,它起作用了。但你能解释一下为什么会发生这种情况,以及这个命令是如何解决这个问题的吗?Ali KHalili 2021-11-07
对我来说是有效的,谢谢,但这不是一个永久的解决方案。Abdul Basit Rishi 2021-11-09
@AliKHalili 这个github链接解释了它:-github.com/webpack/webpack/issues/14532#issuecomment-947012063Ritesh Kumar 2021-11-09
@AbdulBasitRishi 是的,很遗憾,它不是。更简单的方法是降级节点的版本。这似乎是Node的一个新版本问题。也许他们会解决这个问题。Ritesh Kumar 2021-11-09
这基本上是对Ajoy Karmakar'的回答的重复(也没有任何解释)。Peter Mortensen 2022-01-02
#8楼
得票数 30

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

2022年12月更新。

这对我来说是有效的(降级到Node.js 16)。

nvm install 16 --lts
nvm use 16

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

ViktorMS 提问于2021-11-15
ViktorMS 修改于2022-12-20
这对我来说是有效的,但我不得不做nvm install lts,没有破折号(Windows 10 - Powershell)。Francesco Casula 2021-12-10
这对我来说是有效的,但在我的机器上,nvm install --lts已经使用了它所安装的版本,所以不需要执行nvm useTomás 2022-02-18
这将不再起作用,因为LTS现在是18岁。Archimedes Trajano 2022-10-30
需要使用像nvm install 16.15.0或任何你想要的版本,然后nvm use 16.15.0Ted 2022-11-28
#9楼
得票数 27

发布了很多解决方法(主要是降级Node.js、OpenSSL或允许不安全的散列),但根本问题是Webpack的output.hashFunction默认为md4,这在最近版本的OpenSSL中会触发这个错误。

来自Webpack的output.hashFunction docs。

Since Webpack v5.54.0+, hashFunction supports xxhash64 as a faster algorithm, which will be used as default when experiments.futureDefaults is enabled.

解决办法是:一是。

  1. 设为output.hashFunction = 'xxhash64'
  2. 设为experiments.futureDefaults = true

在你的Webpack配置中,你可以选择使用 "M "字。

Greg 提问于2022-08-23
Greg 修改于2022-09-08
如果像我一样,你做了这个改变,但还是遇到了问题,那么请检查你的加载器。file-loadercss-loader默认使用md4。你可以在设置名称选项时强迫它们使用另一个散列算法,就像这样。'[name].[sha512:hash:6].[ext]'Kristian Roebuck 2022-11-16
你好 @Greg ,感谢你对这个问题的真实回答。但我使用的是Nuxt 2,它使用的是Webpack 4,输出似乎不是一个规则属性。所以我不知道如何解决这个问题,以便能够升级Node版本(在Docker上构建)。有什么想法吗?谢谢!Claire 2022-12-07
我得到了一个" Error: Digest method not supported"错误,当设置output.hashFunctionxxhash64时。也许是因为我使用的是Webpack v4?Paul Razvan Berg 2022-12-12
对不起,这个答案根本不起作用......当你把experiments.futureDeafults改为true时,webpack会抛出错误:" experiments is an invalid configuration object" ,当把输出hashFunction设置为xxhash64时,你会得到Paul Razvan Berg在上面提到的错误 - 这个答案需要进一步解释或者完全删除 - 它给我带来的问题比它解决的要多得多。Julius Goddard 2022-12-19
#10楼
得票数 26

Failed to construct transformer: Error: error:0308010C:digital envelope routines::unsupported

解决上述错误的最简单和最容易的方法是将Node.js降级到14.18.1版本。然后只需删除文件夹node_modules,并尝试重建你的项目,你的错误一定会得到解决。

ati hy 提问于2021-10-24
Peter Mortensen 修改于2021-11-15
这句话的措辞很奇怪:|尝试在代码周围使用`字符,markdown帮助a1cd 2021-10-24
v16.13.0版本而不是17.x版本对我来说也很有效。我也不需要删除node_modules文件夹。Tigerware 2021-10-28
我正在运行14.17.3版本的节点,但我仍然有这个问题。brohjoe 2022-03-23
#11楼
得票数 25

原因是什么?

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


废弃的方法

目前的LTS版本是v18.12.0 (npm v8.19.2),截止到2022-10-27


安装Node Version Manager或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/

Pablo Yabo 提问于2022-05-20
Artfaith 修改于2022-10-27
谢谢你!我一直在寻找一个能够真正解释问题的人,而不是仅仅发送解决方案。Cédric Bloem 2022-08-26
节点18现在是LTS了lyjackal 2022-10-27
我有这样的问题,NPM版本:8.19.2 NODE版本:v18.12.0Fabiel León 2022-10-28
嗯,这个解决方案对我不起作用(如果有关系的话,我用的是ubuntu 20.04)。Shmuel Kamensky 2022-10-30
实际上,我在出错之前就做了这些步骤,在node v18.12.1(npm v8.19.2)的macOS上仍然有这个问题。Mishka 2022-11-08
#12楼
得票数 21

在使用VueJS时,有这样的问题。

使用-openssl-legacy-provider的缺点是,老的Node版本不支持它。旧的Node版本在提供这个标志时根本无法运行。
但我还是想与Node v16和更老的版本兼容。

VueJS使用md4算法来生成哈希值(wel实际上是WebPack在幕后)。对于这些目的,md4可以很容易地被md5取代。使用的算法类型,在大多数地方都是硬编码的,所以没有办法配置其他算法。

所以我想出了另一个解决方法。一个函数拦截了来自crypto模块的原始createHash()调用,并将其替换为一个修改过的版本。这是在我的vue.config.js文件的开头。

const crypto = require('crypto');

/**
 * md4 algorithm is not available anymore in NodeJS 17+ (because of lib SSL 3).
 * In that case, silently replace md4 by md5 algorithm.
 */
try {
  crypto.createHash('md4');
} catch (e) {
  console.warn('Crypto "md4" is not supported anymore by this Node version');
  const origCreateHash = crypto.createHash;
  crypto.createHash = (alg, opts) => {
    return origCreateHash(alg === 'md4' ? 'md5' : alg, opts);
  };
}
Rob Juurlink 提问于2022-05-12
Rob Juurlink 修改于2022-05-18
这对我来说几乎有效,但后来我的webpack构建的某些部分会使用一些多进程节点构建步骤。那么你就不能把这个"shim"注入到生成的node实例中。我最后只是在OpenSSL层面上解决了这个问题。stackoverflow.com/a/73904032/809572Josh Bowden 2022-09-30
这是最优雅的解决方案,它也解决了md4的使用,并使用md5。(见@JoshBowden的评论,链接到stackoverflow.com/a/73904032/16805,其中描述了潜在的问题)。youri 2022-10-21
#13楼
得票数 19

检查一下

node -v
v17.4.0

然后回滚到node --lts (node v16.13.2 (npm v8.1.2)),为此要使用nvm

nvm install 16

然后检查node -v,确认它是第16版。

chandrakant sangale 提问于2022-02-01
Mike 'Pomax' Kamermans 修改于2022-09-04
我使用的是16.13.2版本,我遇到了这个错误。titusfx 2022-02-19
这对我来说是有效的,而且我还先更新了反应脚本,所以其中一个脚本修复了这个问题。Shazam 2022-06-01
记住,你的答案将超过lts的含义。现在是16版,一年后将会是18版,所以如果你告诉人们他们需要16版,请给出该版本的nvm说明,而不是 "无论lts是什么"。Mike 'Pomax' Kamermans 2022-09-04
#14楼
得票数 16

我在Docker构建中遇到了这个问题,我在Docker文件中加入了这一行。

RUN export NODE_OPTIONS=--openssl-legacy-provider && yarn build && yarn install --production --ignore-scripts --prefer-offline

对于本地开发,在文件package.json中添加该开关。

Santosh Karanam 提问于2021-10-28
Peter Mortensen 修改于2022-01-02
NODE_OPTIONS=--openssl-legacy-provider是命令行参数,在你运行yarn build时应该出现。与Docker没有关系。当你构建你的应用程序的docker镜像时,上面这行是你用来构建的Santosh Karanam 2021-11-02
这几乎是 Ajoy Karmakar 的回答 的重复。这个也缺少解释。你能解释一下吗?例如,为什么需要--openssl-legacy-provider?为什么所有的yarn 东西?请通过编辑(更改)您的答案来回复,而不是在评论中回复(没有 “编辑:”、“更新:”或类似的 - 答案应该看起来就像今天写的一样)。Peter Mortensen 2022-01-02
上面的答案在docker文件中运行,yarn作为包管理器。这将有助于使用类似环境和无法用其他答案解决的用户。我将对答案进行编辑,提供更多解释。谢谢Santosh Karanam 2022-01-04
#15楼
得票数 15

这个解决方案对我来说是有效的。

这个错误是在Node.js 17+版本中出现的,所以试着降低Node.js版本。

  1. 从计算机上卸载Node.js。
  2. 下载Node.js第16版,并从https://nodejs.org/download/release/v16.13.0/中再次安装它。

这就是全部了。

Abdul Basit Rishi 提问于2021-11-10
Abdul Basit Rishi 修改于2021-11-24
但为什么?为什么节点v17会出现问题a1cd 2021-11-11
@Evergreen 这很可能是webpack4的问题,在17版中,Node.js开发者已经放弃了尾部斜线模式的映射,这在导入映射规范中是不被支持的。Node.js开发者需要尽快解决这个问题。Abdul Basit Rishi 2021-11-12
是的,我希望node js,作为一个广泛使用的产品,在向后兼容方面会有更多的关注。a1cd 2021-11-13
或者,如果你使用nvm(节点版本管理器)(如果你没有,你应该使用,所以趁此机会,你可以这样做......),你可以直接输入nvm install 16,你就可以走了。Kyle Baker 2021-11-24
请注意,措辞具有误导性:“错误”根本不是错误,它是 Node 17+ 实际上使用的是安全版本,而不是已知的不安全版本的 OpenSSL。 旁路 是安装 Node 16 并以不安全的 SSL 行为继续运行,但解决方案 是将您的依赖项更新为与 Node 17+ 兼容的依赖项。Mike 'Pomax' Kamermans 2022-09-04
#16楼
得票数 15

我也遇到了同样的错误。

我的案例。

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

在本地,我的构建工作正常,但当我试图发布时,却出现了错误,无法完成。

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

我通过更新我的react-script库到5.0.1来解决这个问题。

"react-scripts": "^5.0.1",
Hajrullah islami 提问于2022-10-20
这是正确的答案。你帮了我大忙。Green Y. 2022-12-12
wawww 2 weeks of work, after unistall npm and update to current one, actually was like from one problem to another fixing that pop up another again but finally when I update the local frontend, backend';s nodejs and npm so does my laptop system nodejs.我把我的react-scripts改成了最新版本。Ermias Kidanegebre 2022-12-25
#17楼
得票数 12

如果你使用react-scripts,你现在可以简单地升级到5.0.0(或以上)版本,这似乎已经解决了这个问题(它包括了一个较新的webpack版本)。

neo post modern 提问于2022-03-03
这解决了我的CI构建的问题,而没有在版本或安全方面走回头路(即在构建中增加了技术债务的松动)。可能是2022年底的最佳答案。davidjmcclelland 2022-11-01
#18楼
得票数 12

运行审计对我来说解决了这个问题

npm audit fix --force
Karthik Rana 提问于2022-04-19
#19楼
得票数 9

如果你面临这个错误,而你又不想改变你的主要配置,一个简单的解决方法是使用以下方法。但我不确定这是否被推荐为一种好的做法。

请随时纠正。

最初,让我们说这是我的package.json文件中的脚本部分。

...
"version": "1.0.0",
  "scripts": {
    ...
    "build": "npm run build:test-app:testing",
    "build:test-app:testing": "ng build test-app --deploy-url  https://test-app.com/ --configuration=test-config",
    ...
  },
  "private": true,
...

为了使用这个export NODE_OPTIONS=--openssl-legacy-provider,你可以做以下的事情。

"version": "1.0.0",
  "scripts": {
....
    "build": "NODE_OPTIONS=--openssl-legacy-provider npm run build:test-app:testing”,
    "build:test-app:testing": "NODE_OPTIONS=--openssl-legacy-provider ng build test-app --deploy-url  https://test-app.com/ --configuration=test-config"
...
  },
  "private": true,

请注意构建脚本。我增加了一个选项。NODE_OPTIONS=--openssl-legacy-provider

这有助于解决Node.js第17版中的这个错误。

对于那些可以灵活改变构建系统的Node.js版本的人来说,只要切换到低于17的版本就可以了,例如16版本。

对于Docker来说,最初使用这个的用例,总是会拉到最新的版本。

...
FROM node:alpine
...

你可以换成像这样的东西。

...
FROM node:16-alpine3.12
...
briancollins081 提问于2021-11-02
Peter Mortensen 修改于2022-01-02
#20楼
得票数 9

这是一个常见的错误,当项目上的软件包没有更新,而你使用的React版本又不是最新的时候。

要解决这个问题,你需要这样修改你的package.json文件。

改变这个👇。

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
}

对这个👇的

"scripts": {
    "start": "react-scripts --openssl-legacy-provider start",
    "build": "react-scripts --openssl-legacy-provider build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
}
erff-on 提问于2022-08-27
Peter Mortensen 修改于2022-09-04
#21楼
得票数 8

在运行开发服务器时,节点版本v18.0.0和nuxt框架版本2.15出现同样的错误,并将通过以下方式进行修复。

"scripts": {
  "dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt"
}
Art Mary 提问于2022-05-11
#22楼
得票数 8

我在使用Node.js v18.4.0构建hoppscotch时遇到了同样的错误,而set NODE_OPTIONS=--openssl-legacy-provider救了我!

日程表

D:\code\rust\hoppscotch-app\hoppscotch>pnpm install && pnpm run generate
Scope: all 5 workspace projects
Lockfile is up-to-date, resolution step is skipped
Already up-to-date
packages/codemirror-lang-graphql prepare$ rollup -c
│ Browserslist: caniuse-lite is outdated. Please run:
│   npx browserslist@latest --update-db
│   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
│
│ src/index.js → dist/index.cjs, ./dist...
│ created dist/index.cjs, ./dist in 2.8s
└─ Done in 4.8s
packages/hoppscotch-data prepare$ tsup src --dts
[20 lines collapsed]
│ CJS dist\chunk-LZ75CAKS.js     13.00 B
│ DTS Build start
│ DTS ⚡️ Build success in 2261ms
│ DTS dist\index.d.ts              714.00 B
│ DTS dist\rest\index.d.ts         2.18 KB
│ DTS dist\graphql\index.d.ts      589.00 B
│ DTS dist\collection\index.d.ts   1.30 KB
│ DTS dist\rest\content-types.d.ts 473.00 B
│ DTS dist\rest\HoppRESTAuth.d.ts  882.00 B
│ DTS dist\type-utils.d.d.ts       1.00 B
└─ Done in 3.8s
packages/hoppscotch-js-sandbox postinstall$ pnpm run build
│ > @hoppscotch/js-sandbox@1.0.0 build D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-js-sandbox
│ > npx tsc
└─ Done in 8.7s
. prepare$ husky install
│ husky - Git hooks installed
└─ Done in 300ms
packages/hoppscotch-app postinstall$ pnpm run gql-codegen
[12 lines collapsed]
│ [14:58:01] Load GraphQL documents [started]
│ [14:58:01] Load GraphQL documents [completed]
│ [14:58:01] Generate [started]
│ [14:58:01] Generate [completed]
│ [14:58:01] Generate helpers/backend/backend-schema.json [completed]
│ [14:58:02] Load GraphQL documents [completed]
│ [14:58:02] Generate [started]
│ [14:58:02] Generate [completed]
│ [14:58:02] Generate helpers/backend/graphql.ts [completed]
│ [14:58:02] Generate outputs [completed]
└─ Done in 4s

> hoppscotch-app@2.2.1 generate D:\code\rust\hoppscotch-app\hoppscotch
> pnpm -r do-build-prod

Scope: 4 of 5 workspace projects
packages/hoppscotch-js-sandbox do-build-prod$ pnpm run build
│ > @hoppscotch/js-sandbox@1.0.0 build D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-js-sandbox
│ > npx tsc
└─ Done in 7.5s
packages/hoppscotch-app do-build-prod$ pnpm run generate
│ > hoppscotch-app@2.2.1 generate D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-app
│ > nuxt generate --modern
│ i Sentry reporting is disabled (no DSN has been provided)
│ i Production build
│ i Bundling only for client side
│ i Target: static
│ i Using components loader to optimize imports
│ i Discovered Components: node_modules/.cache/nuxt/components/readme.md
│ √ Builder initialized
│ √ Nuxt files generated
│ i Compiling Client
│  ERROR  Error: error:0308010C:digital envelope routines::unsupported
│     at new Hash (node:internal/crypto/hash:67:19)
│     at Object.createHash (node:crypto:133:10)
│     at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at runSyncOrAsync (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at Array.<anonymous> (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loa
│     at Storage.finished (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\enhanced-resolve@4.5.0\node_modules\e
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\enhanced-resolve@4.5.0\node_modules\enhanced-resolve\li
│  WARN  Browserslist: caniuse-lite is outdated. Please run:
│   npx browserslist@latest --update-db
│   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
│  ERROR  error:0308010C:digital envelope routines::unsupported
│   at new Hash (node:internal/crypto/hash:67:19)
│   at Object.createHash (node:crypto:133:10)
│   at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\u
│   at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\
│   at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js:5
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js:3
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Loader
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\lo
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\lo
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Loader
│   at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\babel-loader@8.2.3_@babel+core@7.16.12\node_modules\babel
│ D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\LoaderRunne
│                       throw e;
│                       ^
│ Error: error:0308010C:digital envelope routines::unsupported
│     at new Hash (node:internal/crypto/hash:67:19)
│     at Object.createHash (node:crypto:133:10)
│     at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\load
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\cache-loader@4.1.0_webpack@4.46.0\node_modules\cache-lo
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\graceful-fs@4.2.8\node_modules\graceful-fs\graceful-fs.
│     at FSReqCallback.oncomplete (node:fs:201:23) {
│   opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
│   library: 'digital envelope routines',
│   reason: 'unsupported',
│   code: 'ERR_OSSL_EVP_UNSUPPORTED'
│ }
│ Node.js v18.4.0
│  ELIFECYCLE  Command failed with exit code 1.
└─ Failed in 8.3s
D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-app:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  hoppscotch-app@2.2.1 do-build-prod: `pnpm run generate`
Exit status 1
 ELIFECYCLE  Command failed with exit code 1.

D:\code\rust\hoppscotch-app\hoppscotch>npx browserslist@latest --update-db
Need to install the following packages:
  browserslist@4.20.4
Ok to proceed? (y) y
Latest version:     1.0.30001357
Updating caniuse-lite version
$ pnpm up caniuse-lite
caniuse-lite has been successfully updated

No target browser changes

D:\code\rust\hoppscotch-app\hoppscotch>pnpm install && pnpm run generate
Scope: all 5 workspace projects
Lockfile is up-to-date, resolution step is skipped
Already up-to-date
packages/codemirror-lang-graphql prepare$ rollup -c
│ Browserslist: caniuse-lite is outdated. Please run:
│   npx browserslist@latest --update-db
│   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
│
│ src/index.js → dist/index.cjs, ./dist...
│ created dist/index.cjs, ./dist in 2.8s
└─ Done in 4.8s
packages/hoppscotch-data prepare$ tsup src --dts
[20 lines collapsed]
│ CJS dist\chunk-JUWXSDKJ.js     1010.00 B
│ DTS Build start
│ DTS ⚡️ Build success in 2250ms
│ DTS dist\index.d.ts              714.00 B
│ DTS dist\rest\index.d.ts         2.18 KB
│ DTS dist\graphql\index.d.ts      589.00 B
│ DTS dist\collection\index.d.ts   1.30 KB
│ DTS dist\rest\content-types.d.ts 473.00 B
│ DTS dist\rest\HoppRESTAuth.d.ts  882.00 B
│ DTS dist\type-utils.d.d.ts       1.00 B
└─ Done in 3.7s
packages/hoppscotch-js-sandbox postinstall$ pnpm run build
│ > @hoppscotch/js-sandbox@1.0.0 build D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-js-sandbox
│ > npx tsc
└─ Done in 8.5s
. prepare$ husky install
│ husky - Git hooks installed
└─ Done in 335ms
packages/hoppscotch-app postinstall$ pnpm run gql-codegen
[12 lines collapsed]
│ [15:02:37] Load GraphQL documents [started]
│ [15:02:37] Load GraphQL documents [completed]
│ [15:02:37] Generate [started]
│ [15:02:37] Generate [completed]
│ [15:02:37] Generate helpers/backend/backend-schema.json [completed]
│ [15:02:38] Load GraphQL documents [completed]
│ [15:02:38] Generate [started]
│ [15:02:38] Generate [completed]
│ [15:02:38] Generate helpers/backend/graphql.ts [completed]
│ [15:02:38] Generate outputs [completed]
└─ Done in 3.8s

> hoppscotch-app@2.2.1 generate D:\code\rust\hoppscotch-app\hoppscotch
> pnpm -r do-build-prod

Scope: 4 of 5 workspace projects
packages/hoppscotch-js-sandbox do-build-prod$ pnpm run build
│ > @hoppscotch/js-sandbox@1.0.0 build D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-js-sandbox
│ > npx tsc
└─ Done in 6.9s
packages/hoppscotch-app do-build-prod$ pnpm run generate
│ > hoppscotch-app@2.2.1 generate D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-app
│ > nuxt generate --modern
│ i Sentry reporting is disabled (no DSN has been provided)
│ i Production build
│ i Bundling only for client side
│ i Target: static
│ i Using components loader to optimize imports
│ i Discovered Components: node_modules/.cache/nuxt/components/readme.md
│ √ Builder initialized
│ √ Nuxt files generated
│ i Compiling Client
│  ERROR  Error: error:0308010C:digital envelope routines::unsupported
│     at new Hash (node:internal/crypto/hash:67:19)
│     at Object.createHash (node:crypto:133:10)
│     at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at runSyncOrAsync (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at Array.<anonymous> (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loa
│     at Storage.finished (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\enhanced-resolve@4.5.0\node_modules\e
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\enhanced-resolve@4.5.0\node_modules\enhanced-resolve\li
│  WARN  Browserslist: caniuse-lite is outdated. Please run:
│   npx browserslist@latest --update-db
│   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
│  ERROR  error:0308010C:digital envelope routines::unsupported
│   at new Hash (node:internal/crypto/hash:67:19)
│   at Object.createHash (node:crypto:133:10)
│   at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\u
│   at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\
│   at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js:5
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js:3
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Loader
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\lo
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\lo
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Loader
│   at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\babel-loader@8.2.3_@babel+core@7.16.12\node_modules\babel
│ D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\LoaderRunne
│                       throw e;
│                       ^
│ Error: error:0308010C:digital envelope routines::unsupported
│     at new Hash (node:internal/crypto/hash:67:19)
│     at Object.createHash (node:crypto:133:10)
│     at module.exports (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\webpack@4.46.0\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\loader-runner\lib\Load
│     at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\loader-runner@2.4.0\node_modules\load
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\cache-loader@4.1.0_webpack@4.46.0\node_modules\cache-lo
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\graceful-fs@4.2.8\node_modules\graceful-fs\graceful-fs.
│     at FSReqCallback.oncomplete (node:fs:201:23) {
│   opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
│   library: 'digital envelope routines',
│   reason: 'unsupported',
│   code: 'ERR_OSSL_EVP_UNSUPPORTED'
│ }
│ Node.js v18.4.0
│  ELIFECYCLE  Command failed with exit code 1.
└─ Failed in 8.2s
D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-app:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  hoppscotch-app@2.2.1 do-build-prod: `pnpm run generate`
Exit status 1
 ELIFECYCLE  Command failed with exit code 1.

D:\code\rust\hoppscotch-app\hoppscotch>echo %NODE_OPTIONS%
%NODE_OPTIONS%

D:\code\rust\hoppscotch-app\hoppscotch>set NODE_OPTIONS=--openssl-legacy-provider

D:\code\rust\hoppscotch-app\hoppscotch>echo %NODE_OPTIONS%
--openssl-legacy-provider

D:\code\rust\hoppscotch-app\hoppscotch>pnpm run generate

> hoppscotch-app@2.2.1 generate D:\code\rust\hoppscotch-app\hoppscotch
> pnpm -r do-build-prod

Scope: 4 of 5 workspace projects
packages/hoppscotch-js-sandbox do-build-prod$ pnpm run build
│ > @hoppscotch/js-sandbox@1.0.0 build D:\code\rust\hoppscotch-app\hoppscotch\packages\hoppscotch-js-sandbox
│ > npx tsc
└─ Done in 7.1s
packages/hoppscotch-app do-build-prod$ pnpm run generate
[732 lines collapsed]
│ √ Generated route "/vi/enter"
│ √ Generated route "/vi/graphql"
│ √ Generated route "/vi/join-team"
│ √ Generated route "/vi/profile"
│ √ Generated route "/vi/realtime"
│ √ Generated route "/vi/settings"
│ √ Generated route "/"
│ √ Client-side fallback created: 404.html
│ i Generating sitemaps
│ √ Generated /sitemap.xml
└─ Done in 6m 37.1s

D:\code\rust\hoppscotch-app\hoppscotch>
Donghua Liu 提问于2022-06-20
Peter Mortensen 修改于2022-08-15
#23楼
得票数 7

这在我的应用程序expo上起了作用(从Node.js 17降级到Node.js 12或14)。

如果你已经安装了nvm,你可以改变node的版本。

首先检查nvm中的Node.js版本。

nvm list

第二,安装12版或14版。

nvm install v12.22.8
Alqadiano G 提问于2021-12-23
Peter Mortensen 修改于2022-01-02
降级并不是一个安全和长期可行的解决方案。Andres 2022-10-14
#24楼
得票数 7

对于Angular应用程序来说。

你也可以编辑package.json中的npm start脚本。而不是

"start": "ng serve -o"

"start": "set NODE_OPTIONS=--openssl-legacy-provider && ng serve -o"

当你在终端/命令行中运行npm run start时,它会首先设置NODE_OPTIONS,以避免出现问题。

Lenka Weiss 提问于2022-04-25
ggorlen 修改于2022-06-18
#25楼
得票数 6

作为一个2022年的读者,没有一个答案涉及到这个问题在早期为Webpack 5用户修复(但没有回传到Webpack 4)。如果你使用Webpack 5,只需升级到至少5.61.0。请看追踪这个问题的线程上的这个评论这里

NetherGranite 提问于2022-11-03
npm安装webpack@latestVictor Choy 2022-11-09
#26楼
得票数 6

我在一个vue js项目中遇到了同样的问题。我所做的是,从机器上卸载新版本(>18)的node js,然后安装以前的版本(v16.14.2)。它可以工作

Sarath Baiju 提问于2022-11-17
我也是这么做的,而且很有效果!vsoni 2022-11-24
是的,它是有效的,但不是一个解决方案。alwe 2022-12-25
是的,这就像一个变通的办法。Sarath Baiju 2022-12-25
#27楼
得票数 5

在PowerShell中。

$env:NODE_OPTIONS = "--openssl-legacy-provider"

它在Node.js v18.7.0版本中工作。

Nasser X 提问于2022-08-09
Peter Mortensen 修改于2022-08-15
我希望我在阅读讨论时先浏览到第二页,找到这个答案,但是,嘿,一个可行的解决方案就是一个解决方案,👍。Adam Leis 2022-08-29
#28楼
得票数 3

你需要将react-scripts更新到最新版本

npm update react-scripts --save
Matic Kogovšek 提问于2022-03-18
这对我来说并不奏效。Shazam 2022-06-01
这对我来说也没有什么用。Todd Hoatson 2022-12-22
#29楼
得票数 3

这个答案是一个即时的OpenSSL系统级的解决方法,而不需要触及先前工作的构建配置。

在理想的世界里,你有时间升级和迁移不安全的构建依赖,并确保你没有破坏你的应用程序中的其他东西(或者批发只是避免webpack,或者在我的例子中,从vue-cli迁移到vite,它使用esbuild)。

你应该(a)告诉webpack使用较新的哈希函数,或者(b)用npm audit来减轻违规软件包的影响。


系统级的OpenSSL解决方法

最快的解决方法是通过在全系统的OpenSSL配置中启用"legacy"密码提供者来暂时重新启用MD4。

这是令人难以置信的不安全和沉重的做法。之后,你应该禁用传统的加密方法。

(不幸的是,下面的内容只在Linux上测试过,可以在Linux上使用)。

  1. 备份你现有的OpenSSL配置:
    sudo cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.BAK

  2. 添加(或取消注释)以下配置,以启用传统的"提供者"(正如OpenSSL所称)。你可能想sudo vim /etc/ssl/openssl.cnf或类似的。

    [provider_sect]
    default = default_sect
    legacy = legacy_sect
    
    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1
    
  3. 重新运行你的节点脚本,就像以前一样。

  4. 事后禁用遗留的提供者

    sudo mv -f /etc/ssl/openssl.cnf.BAK /etc/ssl/openssl.cnf

这个解决方案来自于一个对类似问题的回答


潜在的原因是什么?

Node在*nix系统上使用OpenSSL的哈希函数和加密功能。最新版本的OpenSSL默认禁用了MD4-,这将破坏任何之前使用MD4的程序。考虑到这一点,任何认为使用MD4进行文件散列是一个"好主意"的npm包现在都被破坏了--尽管MD4自1996年以来就被RSA实验室认为是被破坏了!MD4在2011年也被RFC 6150正式列为过时的东西了。

Josh Bowden 提问于2022-09-30
Josh Bowden 修改于2022-09-30
#30楼
得票数 3

快速修复的建议,对我来说是有效的。 cd到你做的新的App目录;你可能需要sudo this install then run the following:

跑步:npm install -g npm-check-updates

然后:ncu -u

然后:npm install

然后:npm start

iAmTonyaMISM 提问于2022-10-05
Siddhartha Mukherjee 修改于2022-10-11
这很危险,因为它不分青红皂白地强迫所有软件包更新。例如,我的一个应用程序是用Vue2编写的,运行所列的命令会把它推到最新的Vue3版本。这肯定会破坏我的应用程序。MatthewEnderle 2022-11-16
#31楼
得票数 2

转到:https://nodejs.org/en/

并为大多数用户下载推荐的版本。

然后从你的电脑上卸载Node.js,并安装推荐的版本。

据我所知,这是一个来自开发团队的问题。他们会尽快解决这个问题,但与此同时,使用推荐版本,一切都会好起来的。

MELLAL Fethi 提问于2021-11-21
Peter Mortensen 修改于2022-01-02
#32楼
得票数 2

如果你在使用GatsbyJs时遇到这个错误,你需要做的就是将node版本降级到长期支持。没有其他救赎办法

Enes 提问于2022-03-29
#33楼
得票数 2

Running react with docker

这可能不是每个人的问题的答案。但对于在docker中运行node 17及以上版本的人来说,正如大家所说的那样,降级会有帮助。没有必要使用open-legacy-sslprovider。在你的Docker文件中简单的切换,从使用

From node

使用的是

From node:16.* 

修复了docker中的这一问题。

Nkoro Joseph Ahamefula 提问于2022-04-03
这对我来说很有效,而且我没有使用docker。降级到node 16解决了我的问题。` nvm use 16 rm -rf node_modules rm yarn.lock yarn install yarn build `.adamwong246 2022-04-04
我正在使用Docker,而这为我解决了这个问题。谢谢你!"。Alexander Terp 2022-08-06
#34楼
得票数 1

在Dockerfile中,你应该添加。

ENV NODE_OPTIONS=--openssl-legacy-provider
Oded BD 提问于2021-11-17
几乎是重复的。Ajoy Karmakar'的回答(也没有任何解释)。Peter Mortensen 2022-01-02
我希望它能清楚地表明如何与Docker一起使用Oded BD 2022-01-02
#35楼
得票数 1

我今天遇到了这个问题,并通过使用"nvm"切换Node.js的版本来解决这个问题。

我一直在做几个使用Node.js的个人项目,Next.js,和React。我经常遇到的情况是,我不记得我到底在哪个项目中使用哪个版本的Node.js。

因此,通常我会尝试为一个目前使用Node.js 14的项目使用Node.js 16(我目前在Node.js 17上)。

我还没有想出一个更好的办法来记住每个项目的Node.js版本,所以我通常会把所有需要运行的命令保存在readme.MD中,以使应用程序启动。

Nhu Ngoan 提问于2021-12-08
Peter Mortensen 修改于2022-01-02
#36楼
得票数 1

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

sudo npm rebuild node-sass

Dudar Mykola 提问于2022-09-13
#37楼
得票数 1

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

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

Yaroslav Larin 提问于2022-10-13
为什么这不是一个公认的答案呢?Jens Marchewka 2022-11-01
#38楼
得票数 1

我在更新webpack后通过更新babel-loader的版本解决了这个错误。然而,这可能是由于另一个加载器或插件,loader-runner出现在原始问题的控制台输出中。见评论这里

Burns 提问于2022-12-06
#39楼
得票数 0

试试吧。

npm create react-app --template typescript foo --use-npm
webcoder 提问于2021-11-01
Peter Mortensen 修改于2021-11-15
解释一下就可以了。例如,想法/要点是什么?它是做什么的?它是如何工作的?为什么它能发挥作用?请通过编辑(改变)你的答案,而不是在这里的评论("编辑:","更新:",或类似的方式--答案应该像今天写的一样)来回答。Peter Mortensen 2021-11-15
#40楼
得票数 0

我在Node.js 17.0.1中面临同样的问题。我通过以下步骤解决了这个问题。

  • 打开控制面板程序和功能Node.js,右键点击Node.js,卸载Node.js。

  • 进入网站https://nodejs.org/en/,下载版本并进行安装。

راجہ مخلص 提问于2021-11-04
Peter Mortensen 修改于2021-11-15
关于"控制面板→程序和功能"。在Windows上,大概是这样?Peter Mortensen 2021-11-15
#41楼
得票数 0

Angular.io项目中,Nodes.js被接受(不支持)的版本是v16.x.x

Nodes v17.x版本中,出现了这个问题中所描述的同样的错误。

解决办法是。

卸载节点并重新安装v16.x版本(适用于Windows系统)。

FXLima 提问于2022-02-09
我的开发环境: - Angular CLI:12.2.1 - Node。16.14.0(不支持) - 包管理器:npm 7.5.6 - 操作系统:win32 x64FXLima 2022-02-09
#42楼
得票数 0

我通过使用LTS版本进行了修复。

echo "lts" > .nvmrc
nvm install

React Native有一个错误的脚本来寻找Node.js可执行文件的路径。

这将通过Node Version Manager将版本设置为Node.js的最新稳定版本。

我发现,即使Node.js在我的路径中,如果我有一个~/.nvm目录,它就会试图在nvm中找到使用而失败。这就把当前的节点设置为链接到~/.nvm中的节点,从而使React Native能够找到。

Dorian 提问于2022-02-17
Peter Mortensen 修改于2022-09-04
#43楼
得票数 -2

在终端(OS X)中,只需像这样降级即可。

sudo n 16.13.0
Andrew 提问于2021-12-16
Peter Mortensen 修改于2022-01-02
#44楼
得票数 -4

在项目文件夹中运行该命令

npm audit fix --force

它将会更新package.json文件。

BikyMandal 提问于2022-11-27
与这个答案stackoverflow.com/a/73027407/2832282没有什么不同,而且你给出的背景也比较少。Cyril Duchon-Doris 2022-11-28