错误消息“错误:0308010C:数字信封例程::不支持”

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

提问人:a1cd 提问时间:10/24/2021 最后编辑:Ivan Akulova1cd 更新时间:10/17/2023 访问量:2320447

问:

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

node.js reactjs webpack

评论

3赞 Mike 'Pomax' Kamermans 10/24/2021
该问题链接中提到的解决方法是否适合您?
2赞 migara 10/24/2021
我在使用 next js 时遇到了同样的错误,我降级了我的节点版本,现在该错误不会显示。
5赞 Janac Meena 12/28/2021
使用 LTS 版本的 Node (V16) 而不是 V17 为我们解决了这个问题。
12赞 Drazisil 4/28/2022
如果您在 NodeJS v18.x 上出现此错误,原因相同。有关原因的详细信息,请参阅 web.archive.org/web/20220412174915/https://nodejs.org/api/...,并按照说明启用 OpenSSL 旧版提供程序 web.archive.org/web/20220416014625/https://nodejs.org/api/...
86赞 neo post modern 2/25/2023
我不想劫持评论部分,但我认为前 10 个答案建议降级您的安全性或坚持使用过时的节点版本是疯狂的,而对于大多数面临此问题(和 OP)的人来说,解决方案只是react-scripts 升级到 >5
3赞 neo post modern 7/2/2023
我并不是要争辩说现实世界的约束或设置不存在,但它们不可能反映/证明当前的答案顺序。我希望这些是“如果明显的解决方案不起作用,请尝试这些解决方法”之类的答案,当您向下滚动时会得到。react-scripts

答:

34赞 ati hy 10/24/2021 #1

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

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

评论

0赞 a1cd 10/24/2021
这措辞很奇怪:|尝试使用 ' 字符周围的代码 Markdown 帮助
10赞 Tigerware 10/28/2021
版本 v16.13.0 而不是 17.x 对我来说也有效。我也不需要删除该文件夹。node_modules
0赞 brohjoe 3/24/2022
我正在运行节点版本 14.17.3,但我仍然遇到此问题。
0赞 Dazzle 2/21/2023
9 月 22 日:所有 github 操作都与节点 16 一起运行:github.blog/changelog/...
0赞 Khasky 7/6/2023
降级到节点 14 为我解决了这个问题。
2469赞 Ajoy Karmakar 10/25/2021 #2

您可以尝试以下方法之一:

1. 降级到 Node.js v16。

  • 您可以从 Node.js 网站重新安装当前的 LTS 版本。

  • 也可以使用 nvm。对于 Windows,请使用 nvm-windows

2. 启用旧版 OpenSSL 提供程序。

在类 Unix(Linux、macOS、Git bash 等)上:

export NODE_OPTIONS=--openssl-legacy-provider

在 Windows 命令提示符下:

set NODE_OPTIONS=--openssl-legacy-provider

在 PowerShell 上:

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

参考

评论

22赞 a1cd 10/26/2021
我该把它放在哪里?
49赞 Ben Winding 11/13/2021
对我来说,这个命令失败了/usr/local/Cellar/node/17.0.1/bin/node: --openssl-legacy-provider is not allowed in NODE_OPTIONS
34赞 Abdul Basit Rishi 11/24/2021
不建议使用此解决方案,请尝试卸载 Node.js 版本 17+,然后重新安装 Node.js 版本 16+。
19赞 Zeeshan Ahmad Khalil 11/26/2021
did 它给出了相同的错误set NODE_OPTIONS=--openssl-legacy-provider
11赞 Maxim Therrien 2/28/2022
降级到 16.13.0 是不够的,它仍然不会让你使用 .要使用此参数,您必须在 v17 及更高版本上,并且该参数必须放在 中,出于安全原因,它不允许您仅将其放在 env var 中。然后它仍然不起作用。随着越来越多的人转向 v16 LTS,这只会成为一个更大的问题,因为许多项目仍然依赖于 Webpack 4--openssl-legacy-providerpackage.jsonNODE_OPTIONS
1075赞 Srujan 10/26/2021 #3

在package.json中:更改此行

"start": "react-scripts start"

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

评论

137赞 Mike 'Pomax' Kamermans 10/26/2021
但请注意,这意味着您现在几乎可以肯定正在使用已知的不安全 SSL 运行,因此这可能会减轻症状,但可能无法解决根本问题。--openssl-legacy-provider
8赞 Thomas Williams 12/3/2021
但是,在运行 localhost 时,这是可以接受的。在新发布的 VS 2022 中,从头开始启动 react-app,让 VS 2022 为你创建一个自签名证书,仍然会导致示例项目崩溃。当使用 NPM 命令行“npx create-react-app react-core-test”从头开始创建 react-project 时,这也是一个问题。我在 Windows 10 和 Windows 11 中运行的两个不同环境中测试了这一点。
29赞 kojiro 12/9/2021
我不明白这意味着,不知何故,将节点 16 与 openssl 1.x 一起使用比在传统模式下将节点 17 与 openssl 3 一起使用更安全。OpenSSL 在 v3 中做了一些更严格的规定。你要么以一种方式,要么以另一种方式打破这种限制。这两种方法可能同样不安全。
9赞 neo post modern 3/3/2022
这已在 react-scripts 5 中得到解决:stackoverflow.com/a/71334532/2525299
3赞 theking2 5/10/2023
我需要先做一个工作才能让它工作。npm audit fix --force
263赞 Ashok Bhobhiya 10/27/2021 #4

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

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

评论

43赞 a1cd 11/1/2021
但。。。为什么新版本与旧代码不兼容?Node 是世界上最大的编程工具之一,它们不会只是创建一个不向后兼容的 NodeJS 新版本(我猜他们会这样做,因为他们这样做了,但你明白我的意思)
15赞 Krishnadas PC 11/20/2021
始终将 LTS 用于实际应用程序,它解决了这个问题。
4赞 trusktr 12/21/2021
16 之后的新 LTS 是否应该恢复到旧的 SSL?我假设问题是一样的,只是推迟到以后,使用 LTS 16 是一个临时解决方案。
57赞 Arek 10/26/2022
从今天开始,节点 18.12.0 是 LTS,所以我认为降级不再是一个有效的策略:-(
8赞 Paul Razvan Berg 12/12/2022
那么,如果 Node v18 现在是 LTS,那么现在的解决方案是什么?
19赞 Santosh Karanam 10/28/2021 #5

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

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

对于本地开发,请在文件package.json中添加交换机。

评论

0赞 Santosh Karanam 11/2/2021
NODE_OPTIONS=--openssl-legacy-provider 是命令行参数,在运行 yarn build 时应该存在。与 Docker 无关。当您构建应用程序的 docker 映像时,上面一行是您用来构建的内容
0赞 Peter Mortensen 1/2/2022
这与Ajoy Karmakar的回答几乎重复。这个也缺少解释。你能解释一下吗?例如,为什么有必要?为什么是所有的东西?请通过编辑(更改)您的答案来回复,而不是在评论中(没有“编辑:”,“更新:”或类似内容 - 答案应该看起来像今天写的一样)。--openssl-legacy-provideryarn
0赞 Santosh Karanam 1/4/2022
上面的答案在 docker 文件中运行,yarn 作为包管理器。这将帮助使用类似环境且无法通过提供的其他答案解决问题的用户。我用更多的解释来编辑答案。谢谢
62赞 davychhouk 11/1/2021 #6

这是 Node.js 版本。

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

评论

13赞 sam 11/5/2021
同样在这里。恢复到节点 16 解决了该问题。
2赞 Kyle Baker 11/25/2021
是的。刚才尝试运行安全帽测试时遇到。很想听听导致它的原因的分解。
1赞 Shivang Chaturvedi 12/5/2021
你是对的,将 npm 版本回滚到 16.13.x 有效!
4赞 Matthias T 12/16/2021
如果您使用的是软件包管理器 Chocolatey,则可以安装 LTS 版本的 node。choco uninstall nodejschoco install nodejs-lts
2赞 Yarycka 1/5/2022
不知何故,这个错误也发生在我身上 节点 v16 上......
-1赞 webcoder 11/1/2021 #7

尝试:

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

评论

3赞 Peter Mortensen 11/15/2021
解释是有序的。例如,想法/要点是什么?它有什么作用?它是如何工作的?它为什么有效?请通过编辑(更改)您的答案来回复,而不是在评论中(没有“编辑:”,“更新:”或类似内容 - 答案应该看起来像今天写的一样)。
14赞 briancollins081 11/2/2021 #8

如果您遇到此错误并且不想更改主配置,一个简单的解决方法是使用以下方法。不过,我不确定它是否被推荐为一种好的做法。

随意更正它。

最初,假设这是我文件的脚本部分: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
...
77赞 Ritesh Kumar 11/3/2021 #9

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

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

set NODE_OPTIONS=--openssl-legacy-provider

对于 Unix,请使用:

export NODE_OPTIONS=--openssl-legacy-provider

评论

8赞 Ali Khalili 11/7/2021
谢谢,它奏效了。但是您能解释一下为什么会发生这种情况以及此命令如何解决问题吗?
0赞 Abdul Basit Rishi 11/9/2021
对我有用,谢谢,但这不是一个永久的解决方案。
0赞 Ritesh Kumar 11/9/2021
@AliKHalili 这个 github 链接解释了它:- github.com/webpack/webpack/issues/14532#issuecomment-947012063
0赞 Ritesh Kumar 11/9/2021
@AbdulBasitRishi 是的,可悲的是事实并非如此。更简单的方法是降级节点版本。似乎是 Node 中的新版本问题。也许他们会修复它
9赞 Peter Mortensen 1/2/2022
这基本上是 Ajoy Karmakar 答案的重复(也没有任何解释)。
1赞 Sanan Ali 11/25/2023
我使用它并收到此错误“电子:NODE_OPTIONS中不允许使用--openssl-legacy-provider” 现在,我不知道如何撤消这个哈哈
-1赞 راجہ مخلص 11/5/2021 #10

我在 Node.js 17.0.1 中遇到了同样的问题。我按照以下步骤解决了它:

  • 打开“控制面板”→“程序和功能”→ Node.js然后卸载 Node.js方法是右键单击

  • 转到网站 https://nodejs.org/en/ 并下载版本并安装。

评论

1赞 Peter Mortensen 11/15/2021
回复“控制面板→程序和功能”:大概在 Windows 上?
13赞 Abdul Basit Rishi 11/10/2021 #11

这个解决方案对我有用。

此错误出现在 Node.js 版本 17+ 中,因此请尝试降级 Node.js 版本。

  1. 从计算机上卸载 Node.js。
  2. 下载 Node.js版本 16 并从 https://nodejs.org/download/release/v16.13.0/ 重新安装

就这样。

评论

5赞 a1cd 11/12/2021
但是为什么?为什么节点 v17 有问题
3赞 Abdul Basit Rishi 11/12/2021
@Evergreen 这很可能是 webpack4 问题,同样在 17 版 Node 中.js开发人员已弃用导入映射规范中不支持的尾部斜杠模式映射。Node.js开发人员需要尽快解决这个问题。
1赞 a1cd 11/14/2021
是的,我希望 Node JS 作为一个被广泛使用的产品,在向后兼容性方面会更加谨慎。
1赞 Kyle Baker 11/25/2021
或者,如果你正在使用 nvm(节点版本管理器)(如果你不是,你应该这样做,所以花点时间这样做......),你只需输入即可。nvm install 16
0赞 Mike 'Pomax' Kamermans 9/5/2022
请注意,措辞具有误导性:“错误”根本不是错误,而是 Node 17+ 实际上使用的是安全的,而不是已知的不安全的 OpenSSL 版本。绕过是安装节点 16 并继续运行不安全的 SSL 行为,但解决方案是将依赖项更新为与节点 17+ 兼容的依赖项。
40赞 ViktorMS 11/15/2021 #12

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

更新时间:2022 年 12 月

这对我有用(降级到 Node.js 16):

nvm install 16 --lts
nvm use 16

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

评论

0赞 Francesco Casula 12/10/2021
它对我有用,但我不得不没有破折号(Windows 10 - Powershell)。nvm install lts
0赞 Tomás 2/19/2022
它对我有用,但在我的机器上已经使用了它安装的版本,所以不需要执行nvm install --ltsnvm use
12赞 Archimedes Trajano 10/30/2022
这将不再起作用,因为 LTS 现在是 18 岁
0赞 Ted 11/28/2022
需要使用喜欢或您想要的任何版本。然后nvm install 16.15.0nvm use 16.15.0
0赞 Mark Gavagan 1/12/2023
在执行此操作之前,请考虑此 - stackoverflow.com/a/73027407/1459653 - 答案中的警告。
2赞 Oded BD 11/17/2021 #13

在 Dockerfile 上,您应该添加:

ENV NODE_OPTIONS=--openssl-legacy-provider

评论

0赞 Peter Mortensen 1/2/2022
近乎重复:Ajoy Karmakar 的回答(也没有任何解释)
0赞 Oded BD 1/2/2022
我希望它清楚地知道如何与 Docker 一起使用
1赞 MELLAL Fethi 11/22/2021 #14

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

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

然后从您的 PC 上卸载 Node.js 并安装推荐的版本。

据我了解,这是开发团队的问题。他们会尽快修复它,但同时使用推荐的版本,一切都会好起来的。

85赞 Gary Bao 鲍昱彤 12/7/2021 #15

2023 年 4 月更新:

这个答案于 2021 年 12 月首次发布,已经一年多了,所以这个答案可能不再那么可靠或相关了。查看有关此问题背后的更多原因和最新解决方案的其他答案。

一些热门答案不起作用。

export NODE_OPTIONS=--openssl-legacy-provider

一些热门答案不适用,修改文件:package.json

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

这是由最新的兼容问题引起的,请参阅 GitHub 上的此问题此问题node.js V17OpenSSL

最简单的方法是从 降级到 .请参阅此帖子 如何降级 .node.js V17node.js V16node.js

评论

14赞 Manuel Lazo 12/17/2021
确认降级版本以修复问题。 .V.16nvm install v16 && nvm alias default v16 && nvm use v16
2赞 onmyway133 1/7/2022
从 v17 降级到 v16 解决了该问题
2赞 Saravanan G 1/18/2022
是的,这个解决方案效果很好。我的工作站里有 V17 并面临这个问题。而我的 GitHub 操作中的相同操作使用 V16,并且没有发生此错误。谢谢!package.json
8赞 Dan D. 10/28/2022
降级不是一个好的选择
0赞 Dev 11/29/2023
好吧,如果我添加此选项,我的 React 代码不会编译。我得到以下错误..........无法编译 ./node_modules/react-idle-timer/dist/index.esm.js 语法错误:/Users/abdc/thank-you-cards-new/node_modules/react-idle-timer/dist/index.esm.js:缺少类属性转换。
-1赞 Nhu Ngoan 12/8/2021 #16

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

我一直在使用 Node.js、Next.js 1 和 React 2 进行一些个人项目。经常发生在我身上的情况是,我不记得我为哪个项目使用了哪个版本的 Node.js。

因此,通常,我会尝试将 Node.js 16 用于当前使用 Node.js 14 的项目。

我还没有找到更好的方法来记住每个项目的 Node.js 版本,所以我通常只保存我需要运行的所有命令,以便在自述文件中启动应用程序。LDO的

7赞 Jr Alex 12/23/2021 #17

这在我的应用博览会中对我有用(从 Node.js 17 降级到 Node.js 12 或 14)。

如果您安装了 nvm,则可以更改 node 的版本:

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

nvm list

其次,安装版本 12 或 14:

nvm install v12.22.8

评论

2赞 Andres 10/14/2022
降级不是一个安全且长期可行的解决方案。
0赞 tiller1010 8/2/2023
我正在使用 Node 18,也在开发 Expo 应用程序。安装最新版本的 @expo/webpack-config 并允许安装任何版本的 Expo(在 package.json 中使用“*”约束),解决了该问题。
15赞 cds 2/1/2022 #18

检查

node -v
v17.4.0

然后回滚到节点 --LTS(节点 v16.13.2 (npm v8.1.2)),以便使用 nvm

nvm install 16

然后检查并确认它是版本 16。node -v

评论

5赞 titusfx 2/20/2022
我使用的是 v16.13.2,但出现此错误
0赞 Shazam 6/2/2022
这对我有用,我也先更新了反应脚本,所以其中一个解决了这个问题。
0赞 Mike 'Pomax' Kamermans 9/5/2022
请记住,您的答案将比含义更持久。现在是 v16,一年后它将是 v18,所以如果你告诉人们他们需要 v16,请给出该版本的 nvm 说明,而不是“无论 lts 碰巧是什么”。lts
0赞 Mark Gavagan 1/12/2023
在执行此操作之前,请考虑此 - stackoverflow.com/a/73027407/1459653 - 答案中的警告。
0赞 FXLima 2/10/2022 #19

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

Nodes v17.x 版本中,会出现此问题中描述的相同错误。

溶液:

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

评论

0赞 FXLima 2/10/2022
我的开发环境: - Angular 命令行界面:12.2.1 - 节点:16.14.0(不受支持) - 包管理器:npm 7.5.6 - 操作系统: win32 x64
0赞 Dorian 2/17/2022 #20

我使用 LTS 版本修复了:

echo "lts" > .nvmrc
nvm install

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

这会通过节点版本管理器将版本设置为 Node.js 的最新稳定版本。

我发现即使 Node.js 在我的路径中,如果我有一个 ~/.nvm 目录,它也会尝试在 nvm 中找到用途并失败。这会将当前节点设置为链接到 ~/.nvm 中的节点,因此 React Native 可以找到该节点。

120赞 neo post modern 3/3/2022 #21

这是最简单的答案并且有效

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

例:npm i react-scripts@latest

评论

5赞 davidjmcclelland 11/2/2022
这解决了我的 CI 构建的问题,而不会在版本控制或安全性上倒退(即增加技术债务,构建中有一个松散的结局)。可能应该是 2022 年底的最佳答案。
6赞 Michael Wegter 1/5/2023
我同意这绝对应该是公认的答案!我花了很多时间尝试使用输出哈希函数等制作一个 webpack.config.js,然后撤消它并尝试执行配置覆盖.js 文件和 react-app-rewired,因为我的环境在 docker 中:都是浪费时间。认真地。只需像上面所说的那样@neo并更新 react-scripts。前任。npm i react-scripts@latest
0赞 Caeta 1/8/2023
当我运行故事书时对我不起作用
2赞 tRuEsAtM 2/25/2023
这没有更新 webpack 版本。将react-scripts更新到最新版本后,我仍然收到相同的错误。
3赞 Nadzeya Yakimchyk 4/4/2023
对于那些使用 yarn 的人:yarn 添加 react-scripts。之后你可能会收到一个core-js错误,然后你应该运行:yarn add core-js
4赞 Matic Kogovšek 3/18/2022 #22

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

npm update react-scripts --save

评论

0赞 Shazam 6/2/2022
这对我不起作用。:/
0赞 Todd Hoatson 12/22/2022
这对我也不起作用。
2赞 Enes 3/30/2022 #23

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

评论

0赞 Slbox 6/26/2023
可悲的是,现在 18 LTS 抛出相同的错误,这无济于事。
2赞 Nkoro Joseph Ahamefula 4/3/2022 #24

Running react with docker

这可能不是每个人的答案。但是对于在 docker 中运行节点 17 及更高版本的任何人来说,正如每个人都说的那样降级会有所帮助。不需要 open-legacy-sslprovider。Dockerfile 中的简单切换

From node

使用

From node:16.* 

修复了 Docker 中的此问题。

评论

0赞 adamwong246 4/4/2022
这对我有用,我没有使用 docker。降级到节点 16 解决了我的问题。' nvm use 16 rm -rf node_modules rm yarn.lock yarn install yarn build '
0赞 Alexander Terp 8/6/2022
我正在使用 Docker,这为我修复了它。谢谢!
17赞 Karthik Rana 4/19/2022 #25

运行审核为我解决了问题

npm audit fix --force

评论

0赞 Heroselohim 4/4/2023
不舒服的道路,但正确的道路。我必须多次运行审核修复程序,直到它完成大多数修复程序。只是轻微的代码制动器。值得
0赞 Blind2k 6/14/2023
第一次尝试就解决了我的案子!感谢您保护我的系统安全!
26赞 Lenka Weiss 4/25/2022 #26

对于 Angular 应用程序:

您还可以在 package.json 中编辑脚本。而不是npm start

"start": "ng serve -o"

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

当您在终端/命令行中运行时,它将首先设置 以避免问题。npm run startNODE_OPTIONS

评论

2赞 Brugner 3/12/2023
这是我使用 Node v18.14.0 运行 Angular 9 应用程序的解决方案。
0赞 StackOverflowUser 9/1/2023
我从 github 上拉下了一个 Angular 12 示例并遇到了错误。我有 Node v18.17.0。这个解决方案对我来说非常有效。
16赞 Art Mary 5/11/2022 #27

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

"scripts": {
  "dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt"
}

评论

0赞 MAZ 3/1/2023
出现错误:找不到模块
82赞 Rob Juurlink 5/13/2022 #28

我在使用 Vue.js 时遇到了这个问题。

使用的一个缺点是旧的 Node.js 版本不支持它。提供此标志时,较旧的 Node.js 版本根本无法运行。
但我仍然希望与 Node.js v16 及更早版本兼容。
-openssl-legacy-provider

Vue.js 使用 MD4 算法来生成哈希值(嗯,实际上它是引擎盖下的 Webpack)。出于此类目的,MD4 可以很容易地被 MD5 取代。在大多数地方,使用的算法类型都是硬编码的,因此无法配置其他算法。

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

const crypto = require('crypto');

/**
 * The MD4 algorithm is not available anymore in Node.js 17+ (because of library SSL 3).
 * In that case, silently replace MD4 by the MD5 algorithm.
 */
try {
  crypto.createHash('md4');
} catch (e) {
  console.warn('Crypto "MD4" is not supported anymore by this Node.js version');
  const origCreateHash = crypto.createHash;
  crypto.createHash = (alg, opts) => {
    return origCreateHash(alg === 'md4' ? 'md5' : alg, opts);
  };
}

评论

0赞 Josh Bowden 9/30/2022
这几乎对我有用,但是我的 webpack 构建的某些部分将使用一些多进程节点构建步骤。然后,您将无法将此“填充码”注入到生成的实例中。我最终只是在OpenSSL级别解决了这个问题:stackoverflow.com/a/73904032/809572node
7赞 youri 10/22/2022
这是最优雅的解决方案,它也解决了 md4 的使用并使用 md5。(请参阅链接到 stackoverflow.com/a/73904032/16805 的@JoshBowden注释,其中描述了潜在问题。
0赞 Lucas 2/3/2023
这是解决我问题的唯一方法。我还有一个 Vue 项目。谢谢!
5赞 Rob Juurlink 2/9/2023
@Lucas它起作用,因为它是一个单例。每次程序(在同一个 NodeJS 运行时中)调用时,都会返回完全相同的对象。cryptorequire("crypto")
6赞 vdechef 2/13/2023
这是最好的答案:它不会禁用安全功能,也不需要返回节点 16。它只是正确地覆盖了过时的算法。谢谢。
11赞 Donghua Liu 6/20/2022 #29

我在使用 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/[email protected] 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

> [email protected] 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/[email protected] 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
│ > [email protected] 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\[email protected]\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at runSyncOrAsync (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at Array.<anonymous> (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loa
│     at Storage.finished (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\e
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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\[email protected]\node_modules\webpack\lib\u
│   at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│   at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js:5
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js:3
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Loader
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\lo
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\lo
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Loader
│   at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]_@[email protected]\node_modules\babel
│ D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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\[email protected]\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\load
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected][email protected]\node_modules\cache-lo
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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  [email protected] 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:
  [email protected]
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/[email protected] 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

> [email protected] 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/[email protected] 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
│ > [email protected] 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\[email protected]\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at runSyncOrAsync (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at Array.<anonymous> (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loa
│     at Storage.finished (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\e
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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\[email protected]\node_modules\webpack\lib\u
│   at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│   at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js:5
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js:3
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Loader
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\lo
│   at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\lo
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Loader
│   at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader
│   at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]_@[email protected]\node_modules\babel
│ D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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\[email protected]\node_modules\webpack\lib
│     at NormalModule._initBuildHash (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_module
│     at handleParseError (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\l
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\webpack\lib\NormalModule.js
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at iterateNormalLoaders (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\loader-runner\lib\Load
│     at context.callback (D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\node_modules\load
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected][email protected]\node_modules\cache-lo
│     at D:\code\rust\hoppscotch-app\hoppscotch\node_modules\.pnpm\[email protected]\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  [email protected] 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

> [email protected] 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/[email protected] 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>
1148赞 David 7/19/2022 #30

危险

这个问题有 30 多个答案,大多数建议将 Node.js 降级到 v17 之前的版本或使用旧版 SSL 提供程序。这两种解决方案都是黑客攻击,使您的构建面临安全威胁

错误原因

在 Node.js v17 中,Node.js 开发人员关闭了 SSL 提供程序中的安全漏洞。此修复是一项重大更改,与 NPM 中 SSL 包中的类似重大更改相对应。当您尝试在 Node.js v17 或更高版本中使用 SSL 而不升级 中的这些 SSL 包时,您将看到此错误。package.json

正确(安全)解决方案(针对 npm 用户)

使用最新版本的 Node.js,并使用具有安全修补程序的最新包。

对于许多人来说,以下命令将解决该问题:

npm audit fix --force

但是,请注意,对于复杂的构建,上述命令将引入可能破坏构建的破坏安全修复程序。

Yarn 用户须知

Yarn 用户可以使用 yarn-audit-fix,它可以在不安装依赖项的情况下通过

npm_config_yes=true npx yarn-audit-fix

或 Windows PowerShell:

$env:npm_config_yes = 1; npx yarn-audit-fix

一个不那么严厉(也是正确的)Webpack 解决方案

在 Webpack 配置中,设置以下任一选项: (请参阅 ouput.hashFunction 文档)

A. (Webpack v5) 设置 .
B. (Webpack v4) 这将取决于 nodejs 在您的系统上支持的哈希算法。您可以尝试的一些常见选项是 或 。
output.hashFunction = 'xxhash64'output.hashFunction = 'sha512'output.hashFunction = 'sha256'

在 Greg 的回答中查看更多信息。

评论

25赞 Luke Hutchison 9/8/2022
npm audit fix --force是唯一对我有用的东西,但我还必须先升级我项目中的所有包依赖项:nodejs.dev/en/learn/......
9赞 David 10/10/2022
@vanowm,升级包比常规升级更严厉。标志甚至升级了重大更改,这是我们许多(也许是大多数?)遇到此问题的人需要解决问题的(除非使用 Greg 的回答中提到的不那么严厉的选项)。audit fix --force--force
10赞 vanowm 10/15/2022
@David,就我而言,使用什么修复它,先验什么也没做......只是说。npm updatenpm audit fix --force
65赞 Carson McManus 11/3/2022
谢谢你真正理智的回答,大卫。我对建议降级节点的答案数量感到震惊。
9赞 Vadorequest 1/10/2023
如果您使用的是 YARN,则需要使用 npm 才能使用此修复程序,以下是一些有帮助的文档: stackoverflow.com/a/60878037/2391795
7赞 Nasser X 8/9/2022 #31

在 PowerShell 中:

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

它与Node.js v18.7.0一起使用。

评论

0赞 Adam Leis 8/30/2022
我希望在阅读讨论之前导航到第 2 页以找到这个答案,但是嘿,一个有效的解决方案是一个解决方案 👍
0赞 Mu-Tsun Tsai 2/24/2023
对我也有用。
82赞 Greg 8/24/2022 #32

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

来自 Webpack 的 output.hashFunction 文档:

从 Webpack v5.54.0+ 开始,支持作为更快的算法,启用后将默认使用。hashFunctionxxhash64experiments.futureDefaults

解决方案是:

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

在您的 Webpack 配置中。

如果您使用的是旧版本的 Webpack(v5.54.0 之前),请点击上面的 output.hashFunction 链接查看您可以使用的其他哈希算法。

评论

5赞 Kristian Roebuck 11/16/2022
如果像我一样,您进行了此更改,但仍然遇到问题,请检查您的加载程序。 并默认使用。在设置 name 选项时,您可以强制他们使用另一个哈希算法,如下所示:file-loadercss-loadermd4'[name].[sha512:hash:6].[ext]'
0赞 Claire 12/7/2022
嗨@Greg,感谢您对这个问题的真正回答。但是我正在使用 Nuxt 2,它使用 Webpack 4,输出似乎不是规则属性。所以我不知道如何解决这个问题,以便能够升级 Node 版本(在 Docker 上构建)。有什么想法吗?感谢!
3赞 Paul Razvan Berg 12/12/2022
设置为 时出现“错误:不支持摘要方法”错误。也许是因为我使用的是 Webpack v4?output.hashFunctionxxhash64
4赞 Julius Goddard 12/19/2022
对不起,这个答案根本不起作用......当您将 experiments.futureDeafults 更改为 true 时 - webpack 抛出错误:“experiments 是一个无效的配置对象,当将输出 hashFunction 设置为 xxhash64 时,您会得到 Paul Razvan Berg 上面提到的错误 - 这个答案需要进一步解释或完全删除 - 它给我带来的问题比它解决的问题多。
0赞 Mark Gavagan 1/12/2023
仅供参考 @Claire,Nuxt3 已经推出且稳定(尚未使用):nuxt.com/v3
20赞 erff-on 8/27/2022 #33

当项目上的包未更新且您使用的 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"
}

评论

0赞 Ed_ 1/5/2023
这已经发布过了,也仅适用于 dev env
1赞 Dudar Mykola 9/13/2022 #34

当我使用 nvm 更改 Node.js 版本时,我遇到了同样的问题。如果您在项目中使用 Sass,请尝试:

sudo npm rebuild node-sass

11赞 Josh Bowden 9/30/2022 #35

此答案是直接的 OpenSSL 系统级解决方法,无需触及以前有效的构建配置。

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

相反,您“应该”(a)告诉webpack使用更新的哈希函数,或者(b)使用。npm audit


系统级 OpenSSL 解决方法

最快的解决方法是通过在系统范围的 OpenSSL 配置中启用“传统”加密提供程序来临时重新启用 MD4。

这是非常不安全和严厉的。之后,您应该禁用传统的加密方法。

(不幸的是,以下内容仅经过测试,可在 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 使用 OpenSSL 在 *nix 系统上进行哈希函数和加密。默认情况下,最新版本的 OpenSSL 会禁用 MD4,这将破坏任何以前使用 MD4 的程序。考虑到这一点,任何认为使用 MD4 进行文件哈希处理是“好主意”的 npm 包现在都坏了——尽管 MD4 自 1996 年以来一直被 RSA Labs 认为是坏的!MD4 也在 2011 年被 RFC 6150 “正式”降级为过时。

4赞 iAmTonyaMISM 10/5/2022 #36

这是一个建议并为我工作的快速修复方法。cd 到您创建的新 App 目录中;您可能需要 ,然后运行以下命令:sudo this install

跑:

npm install -g npm-check-updates

然后:

ncu -u

然后:

npm install

然后:

npm start

评论

4赞 MatthewEnderle 11/16/2022
这很危险,因为它会不分青红皂白地强制更新所有软件包。例如,我的一个应用程序是用 Vue2 编写的,运行列出的命令会将其推送到最新的 Vue3 版本。它肯定会破坏我的应用程序。
2赞 Yaroslav Larin 10/14/2022 #37

我在 Windows 上通过卸载 OpenSSL 1.1.1、安装 OpenSSL 3(如果您使用 Chocolatey: )并将 Angular 更新到最新版本(当前为 14)解决了这个问题,这解决了上述 Webpack 配置问题。choco install openssl.light

当然,正如大多数答案所暗示的那样,降级 Node.js 不是一种正确的方法。

评论

0赞 Jens Marchewka 11/1/2022
为什么这不是公认的答案?
37赞 Hajrullah islami 10/20/2022 #38

我有同样的错误。

我的情况:

我安装了一个新的 React TypeScript 应用程序,添加了一些 SCSS 内容和一些组件。

在本地,我的构建正在工作,但是当我尝试发布时,它失败了并出现错误:

错误:错误:0308010C:数字信封例程::不支持

我通过将我的 React 脚本库更新到 5.0.1 解决了这个问题:

"react-scripts": "^5.0.1",

评论

0赞 Green Y. 12/12/2022
这是正确答案。你帮了我很多。
0赞 Ermias Kidanegebre 12/26/2022
wawww 2 周的工作,在 unistall npm 并更新到当前问题之后,实际上就像从一个问题到另一个问题修复再次弹出另一个问题,但最后当我更新本地前端、后端的 nodejs 和 npm 时,我的笔记本电脑系统 nodejs 也是如此。我将我的 react-scripts 更改为最新的 version.it 作品
0赞 Andrey Patseiko 2/20/2023
我刚刚跑.yarn add react-scripts
0赞 Anit 3/2/2023
我已经浏览了所有答案,但这个答案似乎更相关,因为我使用的是当前的 Node LTS v 18。使用最新的 react-script 库解决了我的问题,而不是降级 Node 版本或使用传统的 SSL 提供程序。
16赞 NetherGranite 11/3/2022 #39

作为 2022 年的读者,没有一个答案能解决这样一个事实,即这个问题在 Webpack 5 用户的早期就已经修复了(但没有向后移植到 Webpack 4)。如果您使用的是 Webpack 5,只需升级到至少 5.61.0 即可。请参阅此处有关跟踪此问题的线程的评论。

评论

0赞 Victor Choy 11/9/2022
npm install webpack@latest
2赞 Kevin 6/1/2023
谢谢!这个答案帮助我以合理的方式解决了这个问题。这就像页面上的第 22 个答案,但它是迄今为止最合理的。错误发生在 webpack 内部。因此,更新 webpack 是有意义的。我更新到最新版本的 webpack,现在我不再看到这个错误。其他答案基本上是 1。隐藏错误消息 2。升级所有依赖项或 3.降级依赖项。公平地说,这些答案将使错误消息消失。但它们并不是最好的答案。
0赞 NetherGranite 6/30/2023
@Kevin 这让我大吃一惊,发现 Webpack 直接解决了这个问题是多么困难,您只需要更新即可获得修复。我太固执了,不能接受任何这些技巧。
0赞 John 9/18/2023
我将 webpack 更新到 5.8.0,但问题仍然相同......
1赞 NetherGranite 9/26/2023
@John 5.8.0 不高于 5.61.0。5.80.0 是。
6赞 Sarath Baiju 11/17/2022 #40

我在 Vue.js 项目中遇到了同样的问题。我从机器上卸载了新版本(大于 18)的 Node.js 并安装了以前的版本(v16.14.2)。它有效。

评论

1赞 vsoni 11/25/2022
我做了同样的事情,它有效!
10赞 alwe 12/25/2022
是的,它有效,但不是解决方案。
0赞 Sarath Baiju 12/25/2022
是的。这就像一种解决方法
0赞 Mark Gavagan 1/12/2023
在执行此操作之前,请考虑此 - stackoverflow.com/a/73027407/1459653 - 答案中的警告。
2赞 Burns 12/6/2022 #41

我通过更新Webpack后的版本解决了这个错误。但是,这可能是由于另一个加载器或插件。 将显示在原始问题的控制台输出中。请参阅此处的评论。babel-loaderloader-runner

评论

0赞 Peter Mortensen 5/11/2023
这与这个答案类似。
1赞 Ed_ 1/5/2023 #42

听起来很简单,如果可行,请将 package.json 文件中的所有依赖项升级到最新版本(只需在 npm 中输入名称并使用建议的版本)。同时使用最新的 LTS 版本的 Node.js。

我以前遇到过问题,即使将我的项目迁移到使用 Yarn,我最终也能够解决这个问题。没有必要通过SSL黑客来损害安全性。

2赞 Ayan 1/17/2023 #43

echo 'export NODE_OPTIONS=--openssl-legacy-provider' >> ~/.zshrc为我工作

-3赞 htmgarcia 1/20/2023 #44

切换到不同版本的 Node.js 也有效。就我而言,我从 v19.2.0 切换到 v15.14.0。

23赞 ahmnouira 1/20/2023 #45

窗户

  1. 安装 nvm-windows

  2. 安装所需的 Node.js 版本。

    nvm install 16
    
  3. 更改 Node.js 版本

    nvm use 16
    
  4. 检查已安装的 Node.js 版本

    nvm list
    

macOS操作系统

只需设置然后再次重新启动:NODE_OPTIONS

export NODE_OPTIONS=--openssl-legacy-provider

评论

0赞 Peter Mortensen 5/11/2023
请查看为什么在提问时不上传代码/错误的图像?(例如,“图像只能用于说明无法通过任何其他方式阐明的问题,例如提供用户界面的屏幕截图。做正确的事情(它也涵盖了答案)。提前致谢。
1赞 Ivan_ug 10/29/2023
这对我有用。真是如释重负!
1赞 OKey 1/26/2023 #46

在更改版本或进行任何配置更改之前,只需运行以将包更新到最新的次要版本即可。npmnpm update

这为我解决了这个问题。

32赞 Badr Bellaj 2/26/2023 #47

要绕过错误(在开发环境中),您只需运行

export NODE_OPTIONS=--openssl-legacy-provider

在启动 Node.js 应用程序之前。

1赞 Mike Bely 3/30/2023 #48

我在将 Next.js 项目部署到 Vercel 时遇到了这个问题。我在文件package.json中降级了 Node.js,方法是添加:

"engines": {
    "node": "v16.15.0"
},

评论

0赞 cminus 4/4/2023
它有助于使用代码/配置行周围的刻度字符来标记代码/配置行,使其从整体注释中脱颖而出。"engines": { "node": "v16.1." }
-5赞 Guilherme Machado 4/12/2023 #49

将 Node.js 版本降级到 16.19.1。

节点.js 16.19.1

这解决了我的问题。

评论

0赞 knb 6/21/2023
点赞。也对我有用。我认为这个答案很有用;如果有人只想将 Node 用作在隔离的 CI/CD 环境(例如 nodejs + vuepress)中工作的静态站点生成器,那么使用 Node 16(尽管 v18+ 是当前稳定的版本)是一个可行的解决方案。
0赞 Kodali444 4/14/2023 #50

就我而言,我使用的是 Azure 设置。当我提出拉取请求时,我收到了这个错误。所以我只是删除了一些带注释的代码,并再次提出了一个拉取请求。

这次我没有看到这个错误。这种情况发生在我的情况下。因此,每当我遇到错误时,我都会做同样的事情。它会对我有用。

Error: error:0308010C:digital envelope routines::unsupported
2023-04-13T13:17:28.4329245Z
2023-04-13T13:17:28.4330391Z     at new Hash
 (node:internal/crypto/hash:71:19)
2023-04-13T13:17:28.4331701Z > [email protected] build
2023-04-13T13:17:28.4333051Z     at Object.createHash
(node:crypto:133:10)
2023-04-13T13:17:28.4333712Z > GENERATE_SOURCEMAP=false react-scripts
build
2023-04-13T13:17:28.4336913Z     at module.exports
(/home/vsts/work/1/s/node_modules/webpack/lib/util/createHash.js:135:53)
2023-04-13T13:17:28.4337284Z
2023-04-13T13:17:28.4338580Z     at NormalModule._initBuildHash
(/home/vsts/work/1/s/node_modules/webpack/lib/NormalModule.js:417:16)
2023-04-13T13:17:28.4339132Z Creating an optimized production build...
2023-04-13T13:17:28.4340765Z     at handleParseError
(/home/vsts/work/1/s/node_modules/webpack/lib/NormalModule.js:471:10)
2023-04-13T13:17:28.4343721Z     at
/home/vsts/work/1/s/node_modules/webpack/lib/NormalModule.js:503:5
2023-04-13T13:17:28.4345956Z     at
/home/vsts/work/1/s/node_modules/webpack/lib/NormalModule.js:358:12
2023-04-13T13:17:28.4348198Z     at
/home/vsts/work/1/s/node_modules/loader-runner/lib/LoaderRunner.js:373:3
2023-04-13T13:17:28.4350393Z     at iterateNormalLoaders
(/home/vsts/work/1/s/node_modules/loader-
runner/lib/LoaderRunner.js:214:10)
0赞 Basheer AL-MOMANI 5/1/2023 #51

由于 Fedora,我遇到了这个问题。

我降级到 Node.js v16,但没有任何运气。

问题是 Fedora 在安装 Yarn 时安装了 Node.js v18。

因此,您必须使用以下命令卸载预安装的 Node.js:

sudo dnf remove nodejs

然后使用 nvm 安装 Node.js:

nvm install 16.19.1

然后使用 npm 而不是 DNF 安装 Yarn:

sudo npm install yarn -g
2赞 AaronNGray 5/18/2023 #52

我在另一个项目中遇到了同样的问题。我在这里克隆了它:react-toolkit-example

问题:

错误:03000086:数字信封例程::初始化错误 #1

set NODE_OPTIONS=--openssl-legacy-provider

它可以作为临时修复程序,但我需要一个适当的解决方案。

30赞 Rajaruban Rajindram 5/18/2023 #53

对于 Vue.js 相关

  1. 启用旧版 OpenSSL 提供程序。

    在类 Unix(Linux、macOS、Git Bash 等)上:

    export NODE_OPTIONS=--openssl-legacy-provider
    

    在 Windows 命令提示符下:

    set NODE_OPTIONS=--openssl-legacy-provider
    

    在 PowerShell 上:

    $env:NODE_OPTIONS = "--openssl-legacy-provider"
    
  2. 在package.json

    重新配置此脚本,如下所示;npm run serve

    "scripts": {
        "serve": "vue-cli-service serve --openssl-legacy-provider",
     },
    
7赞 Hitesh Prajapati 5/25/2023 #54

您必须在此文件中使用 MD5。MD4 是默认值,但它不起作用。 它将毫无问题地工作,直到您删除node_modules文件夹文件夹。

转到此路径: */node_modules/metro-cache/src/

将文件 stableHash.js 如下从 md4 更改为 md5

Enter image description here

评论

0赞 M.skr 6/17/2023
谢谢 Hitesh,你的解决方案救了我
0赞 Im Batman 7/12/2023
这必须有很多票。这是答案终于帮助了我。顺便说一句,@hitesh将来会从 RN 那里得到修复
1赞 Lucdabomb 7/31/2023
你是我的英雄!!从所有答案来看,这个解决方案:)
0赞 MomasVII 8/18/2023
这对我有用。但是,是否无法通过更新相关包来解决此问题?
6赞 Kodjo Tchioffo 5/31/2023 #55

npm update为我修好了。NPM V18版本

评论

0赞 Matt Ruiz 8/28/2023
yarn upgrade截至 23 年 8 月 28 日为我工作
0赞 Daniel Tonon 10/27/2023
我想你的意思是 Node v18。npm 目前只能升级到 v10
70赞 Manik Kumar 7/11/2023 #56

适用于 MacOS、Windows 和 Linux

更新到 Node JS 版本 18.17.1 后,我在本地主机上运行时遇到了这个问题,我能够通过在 Package.json 中更新我的启动命令来解决它。

请在下面找到相应的命令。

"start": "export NODE_OPTIONS=--openssl-legacy-provider && react-scripts start"

你也可以使用 npm audit fix --force 这也将修复它,但不知何故它对我不起作用。

评论

10赞 danwellman 8/29/2023
Windows 用户可以使用 代替 ,例如:setexport"start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start"
0赞 Vikas Hire 12/8/2023
npm audit fix --force 这对我有用。谢谢。。。!
0赞 saba 12/8/2023
我还将其添加到构建部分“build”:“export NODE_OPTIONS=--openssl-legacy-provider && react-scripts build”,
0赞 Artem N 7/12/2023 #57

对于那些不想玩弄节点版本的人。 项目是电子应用程序,带有 webpack 4.x 版本。

某些编码和哈希值不匹配。我玩了几个小时来为我使用的节点和依赖项找到匹配的对。

只需将 hashFunction 和 hashDigest 添加到 webpack 配置输出部分即可 输出:{ hashFunction :'sha256', 哈希摘要:'base64' }

1赞 Chandrakant shinde 7/27/2023 #58

当我迁移react js项目以支持打字稿时,我遇到了同样的错误。

  1. 删除文件夹node_module
  2. 运行命令npm install
  3. 运行命令npm audit fix --force
  4. 尝试启动
    服务器这对我有用

评论

0赞 Ram Chander 8/3/2023
这并不能真正回答这个问题。如果您有其他问题,可以通过单击“提问”来提问。要在此问题获得新答案时收到通知,您可以关注此问题。一旦你有足够的声誉,你还可以添加赏金来吸引更多人关注这个问题。- 从评论
14赞 Hiran Walawage 8/4/2023 #59
"scripts": {
  "start": "react-scripts --openssl-legacy-provider start",
  "build": "react-scripts --openssl-legacy-provider build",
}

这对我有用。

1赞 Vivek Bhandari 8/17/2023 #60

工作 100% 正确。

溶液:

安装节点版本管理器 (NVM):NVM 是一种简化管理多个 Node.js 版本的工具。如果您没有 NVM,请在终端中运行以下命令进行安装:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

重新启动终端:关闭并重新打开终端以确保 NVM 已正确初始化。

安装 Node.js 16.13.0:使用 NVM 安装所需版本:

nvm install 16.13.0

使用 Node.js 16.13.0:将 Node.js 16.13.0 设置为当前终端会话的活动版本:

nvm use 16.13.0

设置默认版本(可选):如果要使 Node.js 16.13.0 成为新终端会话的默认版本:

nvm alias default 16.13.0

验证安装:通过运行以下命令确认 Node.js 16.13.0 处于活动状态:

node -v npm -v

请记住,您可以在需要时使用 NVM 在不同的 Node.js 版本之间轻松切换。如果要切换回其他版本,请使用具有相应版本号的 nvm use。

如果您有任何问题或需要进一步的帮助,请随时联系我们!

18赞 Mohammad Nadr 9/11/2023 #61

我遇到了同样的问题,以下方法奏效了。

将环境变量设置为 。为此,请打开终端并运行以下命令:NODE_OPTIONS--openssl-legacy-provider

适用于 macOS、Linux 或 Windows Git Bash

export NODE_OPTIONS=--openssl-legacy-provider

评论

0赞 Fantasyczl 11/30/2023
这正在工作
1赞 Avinash Singh 9/14/2023 #62

仅运行以下命令解决了我的问题,

npm audit fix --force
0赞 Diomar Felipe Villarroel 9/15/2023 #63

我遇到了同样的问题,但是我的 webpack react 应用程序,所以我只是升级了我的 babel-loader 模块,以及所有的 babel 和 webpack 模块,这些模块都已升级并与节点 > V17 兼容,我建议升级受此问题影响的软件包

0赞 Walt Howard 9/21/2023 #64

运行 node v20.6.1、Debian 11.7、Docker 20.10.21 并遇到这个问题,我刚刚使用并解决了。不使用 nvm。我注意到确实将react-scripts升级到5.0.1npm audit fix --forcenpm audit fix --force

-1赞 Dave Russell 10/16/2023 #65

我在尝试“yarn build”时遇到了这个错误,并且我正在使用节点 v18.17.1

这是我package.json......

"scripts": {
    "build": "env-cmd -f ../../dotenv/.env.production webpack --mode production
...
}
...

我的webpack.config.js如下,我正在尝试运行^,但我的webpack.config.js中的模式是开发webpack --mode production

module.exports = {
   mode: "development",
   entry: './app/App.js',
   output: {
      path: path.join(__dirname, '/build/'),
      publicPath: '/',
      filename: 'assets/bundle.js'
   },
-3赞 Sanan Ali 11/26/2023 #66

因此,每个人都建议要么降级版本(在我看来这不是一个解决方案),要么添加这也不是解决方案。我正在使用节点版本 20,我所做的只是更新 npm。 只需运行export NODE_OPTIONS=--openssl-legacy-provider

npm update

然后再次运行该应用程序。当图像未加载时,我在 electron js 项目中遇到了这个问题。非常适合我。

0赞 JHUTAN DA 12/15/2023 #67

当我启动一个react项目时,尝试打开localhost并运行命令,显示此消息npm start

“错误:0308010C:数字信封例程::不支持”

我只是以这种方式解决了这个问题—— 打开同一项目文件夹中的终端并键入>花一些时间安装缺少的包,然后转到同一个项目文件夹终端并点击 This Works Perfectly。(我用的是 Windows。npm audit fix --forcenpm start