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

Eve*_*een 2129 node.js reactjs webpack

我创建了默认的 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;
  ^
Run Code Online (Sandbox Code Playgroud)

这似乎是最近的一个问题 - webpack 4 天前就遇到了这个问题,并且仍在处理中

小智 2599

您可以尝试以下其中一项:

\n

1. 降级到 Node.js v16。

\n\n

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

\n

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

\n
export NODE_OPTIONS=--openssl-legacy-provider\n
Run Code Online (Sandbox Code Playgroud)\n

在 Windows 命令提示符下:

\n
set NODE_OPTIONS=--openssl-legacy-provider\n
Run Code Online (Sandbox Code Playgroud)\n

在 PowerShell 上:

\n
$env:NODE_OPTIONS = "--openssl-legacy-provider"\n
Run Code Online (Sandbox Code Playgroud)\n

参考

\n

  • 对我来说,这个命令失败 `/usr/local/Cellar/node/17.0.1/bin/node: --openssl-legacy-provider is not allowed in NODE_OPTIONS` (51认同)
  • 不推荐此解决方案,请尝试卸载 Node.js 版本 17+ 并重新安装 Node.js 版本 16+。 (35认同)
  • 我该把这个放在哪里? (25认同)
  • 做了 `set NODE_OPTIONS=--openssl-legacy-provider` 它给出了相同的错误 (20认同)
  • 降级到 16.13.0 是不够的,它仍然不允许您使用 `--openssl-legacy-provider`。要使用此参数,您必须使用 v17 及更高版本,并且该参数必须放置在 `package.json` 中,出于安全原因,它不允许您将其放置在 `NODE_OPTIONS` 环境变量中。然后还是不行。随着越来越多的人转向 v16 LTS,这只会成为一个更大的问题,因为许多项目仍然依赖于 Webpack 4 (12认同)
  • 在 PowerShell 上,`$env:NODE_OPTIONS = "--openssl-legacy-provider"`。升级到 18.4.0 没有帮助。 (5认同)
  • 在 Mac Monterrey 上,这个环境。答案中提到的变量解决了这个问题:`export NODE_OPTIONS=--openssl-legacy-provider` (4认同)
  • @rob-juurlink 的答案是唯一对我来说可行的答案 /sf/answers/5055342211/。它不需要降级 Nodejs,也不需要更新所有底层的 Webpack 内容等,也不需要 `--openssl-legacy-provider` 标志。它针对根本问题(在 OpenSSL 3 中放弃了对 MD4 的支持)并以相当优雅的方式修复它。 (3认同)
  • **警告:警告:警告:警告:警告:警告:警告:警告:如果您使用“yarn”工具,它将默认为“/usr/bin/node”,并且不会正确遵循您的“PATH”。我浪费了一个小时通过“n”工具将我的节点降级到各种旧版本。我仍然不断收到错误。最后,我卸载了发行版的“nodejs”包,现在 Yarn 意识到我想使用“/usr/local/bin/node”中的“n”版本。错误已修复。可能有一种方法可以告诉 Yarn 使用哪个 Node 版本,但我只是假设它会从“PATH”中找出答案,嗯。** (3认同)
  • @Evergreen,您必须在构建时定义变量 --> 在 npm run 命令中(您可以根据您的操作系统使用导出、SET 或 cross-env) (2认同)
  • 对于许多使用 Linux 的人来说,执行简单的“export NODE_OPTIONS=--openssl-legacy-provider”并不是一个非常有效的解决方案。一旦您的终端会话结束,该更改就会消失。如果你想使其永久化,你必须将其添加到类似 ~/.bash_profile 或 ~/.bashrc 中。不管怎样,正如其他人提到的,我认为设置一个环境变量来解决这个问题感觉有点老套。我认为最好恢复到 Node 的 LTS 版本。 (2认同)
  • 我在节点 16.13.2 上遇到这个问题 (2认同)
  • `echo 'export NODE_OPTIONS=--openssl-legacy-provider' >> ~/.zshrc` 对我有用。不要忘记重新打开终端 (2认同)

Dav*_*vid 1301

危险

这个问题有 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
Run Code Online (Sandbox Code Playgroud)

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

Yarn 用户注意事项

Yarn 用户可以使用yarn-audit-fix,它可以运行而无需安装为依赖项

npm_config_yes=true npx yarn-audit-fix
Run Code Online (Sandbox Code Playgroud)

或 Windows powershell:

$env:npm_config_yes = 1; npx yarn-audit-fix
Run Code Online (Sandbox Code Playgroud)

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

在您的 Webpack 配置中,设置以下任一内容:(请参阅ouput.hashFunction 文档

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

请参阅格雷格的回答中的更多信息。

  • 谢谢你真正理智的回答,大卫。我对建议降级节点的答案数量感到震惊。 (74认同)
  • “npmauditfix--force”是唯一对我有用的东西,但我还必须首先升级项目中的所有包依赖项:https://nodejs.dev/en/learn/update-all-the-nodejs -最新版本的依赖项/ (29认同)
  • @David,在我的例子中,使用“npm update”修复了它,之前的“npmauditfix --force”什么也没做……只是说。 (12认同)
  • @vanowm,“审核修复 --force”以比常规升级更严厉的方式升级软件包。“--force”标志甚至会升级重大更改,这是我们中许多(也许是大多数?)遇到此问题的人需要解决问题的问题(除非使用格雷格的答案中提到的不太严厉的选项)。 (9认同)
  • 如果您使用 YARN,则需要使用 npm 来使用此修复程序,以下是一些有帮助的文档:/sf/answers/4261462621/ (9认同)
  • 这个解决方案对我没有任何帮助 - 无论是“正确的安全解决方案”还是“不太严厉的解决方案” - 它只是浪费了我的时间,并且在尝试这些修复后我得到了完全相同的错误消息。 (3认同)
  • npm 审核修复 --force 完全破坏了我的项目!该死 (3认同)
  • 纱线用户可以使用“yarn-audit-fix”包,它在修复审核错误方面对我有用,但遗憾的是没有修复 SSL 问题, (3认同)
  • 我无法运行“npm 审核修复”,因为我使用的代理不支持它。另一种方法是执行“npm 审核 --regsitry=https://resgistry.npmjs.org” 并手动检查包以查找违规者(在我的例子中为“elliptic”)。查找“使用损坏或有风险的加密算法”。然后手动将该包更新到无问题的版本。 (2认同)
  • 如果您正在从事大型项目,请使用“npmauditfix--force”,这有效,其他选项不安全 (2认同)
  • @JuliusGoddard,我同意。我刚刚学习 React,正在学习 3 个月前发布的课程(所以相对最新)。我不知道这是关于什么的。但是在运行 npmauditfix --force 之前我有 72 个审核错误,之后我有 72 个错误。没有什么是固定的。当我尝试将 `output.hashFunction = 'xxhash64'` 添加到我的 webpack.config.js 文件(顺便说一句,这不容易找到)时,我收到了此错误消息:`(node:12080) [DEP0111] DeprecationWarning: Access process.binding('http_parser') 已弃用。...输出未定义` (2认同)
  • @托德·霍特森我知道......解决方案就像“不要听其他人的,我们的答案是最好的”,它不会做任何事情并搞砸人们的项目。 (2认同)
  • 对我来说,使用“npm i --package-lock-only”(因为我使用的是yarn),然后使用“npmauditfix--force”让我从28个漏洞减少到0个,所以我假设这个答案可以工作。(正如作者指出的那样,可能会失败) (2认同)

小智 1108

在您的 package.json 中:更改此行

"start": "react-scripts start"
Run Code Online (Sandbox Code Playgroud)

"start": "react-scripts --openssl-legacy-provider start"
Run Code Online (Sandbox Code Playgroud)

  • 但请注意,`--openssl-legacy-provider`意味着您现在几乎可以肯定[使用已知的不安全SSL运行](https://www.openssl.org/docs/manmaster/man7/OSSL_PROVIDER-legacy.html),所以这可能会减轻症状,但可能无法解决根本问题。 (151认同)
  • 我不明白这样的含义:在传统模式下,使用带有 openssl 1.x 的节点 16 比使用带有 openssl 3 的节点 17 更安全。OpenSSL 在 v3 中做了更严格的规定。你要么以一种方式克服这种限制,要么以另一种方式。这两种方法可能同样不安全。 (30认同)
  • 这已在react-scripts 5中解决:/sf/answers/4993417271/ (11认同)
  • 但当然,在运行 localhost 时这是可以接受的。在新发布的 VS 2022 中,从头开始启动一个 React-App,让 VS 2022 为你创建一个自签名证书,仍然会导致示例项目崩溃。使用 NPM 命令行“npx create-react-app react-core-test”从头开始创建反应项目时,这也是一个问题。我在运行 WIndows 10 和 Windows 11 的两个不同环境中对此进行了测试。 (10认同)
  • 我需要首先执行“npmauditfix--force”才能使其正常工作。 (4认同)
  • 请参阅阿肖克的回答。这是保持 SSL 正常运行且没有漏洞的正确解决方案,并且它对我很有效。 (2认同)

Ash*_*iya 261

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

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

  • 从今天开始,Node 18.12.0 是 LTS,所以我认为降级不再是一个有效的策略:-( (60认同)
  • 但是...为什么新版本与旧代码不兼容?Node 是世界上最大的编程工具之一,他们不会仅仅创建一个不向后兼容的 Nodejs 新版本(我猜他们会这样做,因为他们确实这么做了,但你明白我的意思) (47认同)
  • 在实际应用程序中始终使用 LTS,它解决了问题。 (15认同)
  • 那么,如果 Node v18 现在是 LTS,那么现在的解决方案是什么? (8认同)
  • 16 年后新的 LTS 是否应该恢复为旧的 SSL?我假设问题是一样的,只是推迟到以后,使用 LTS 16 是一个临时解决方案。 (4认同)
  • 有人说:**在实际应用程序中始终使用 LTS,它解决了问题。** 我升级到最新的 LTS `Node.js 18.13.0` (请参阅 https://nodejs.org/en/download/releases/) ,并且它没有解决这个问题。然后我尝试了“npmauditfix--force”解决了这个问题。当我运行 diffs 查看更新内容时,它是 `react-scripts: "^5.0.1"` (之前是 3.4.0)。其中一个答案表示修复方法是使用 React-scripts 版本 5。 (3认同)
  • 强制降级 (2认同)
  • https://nodejs.org/en/about/releases/ 和 https://render.com/docs/node-version 似乎对我有帮助。 (2认同)
  • “我有一个节点问题......” - “不在乎!降级它”。我建议创建一个像 v1000 这样的版本号,并且每个版本的主要版本都会减少。所以最好的版本是较小的版本。直到我们达到 v0.0 (2认同)

neo*_*ern 144

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

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

例子: npm i react-scripts@latest

  • 我同意这绝对应该是公认的答案!我花了很多时间尝试使用输出 hashFunction 等制作 webpack.config.js,然后撤消该操作并尝试执行 config-overrides.js 文件和 react-app-rewired,因为我的环境位于 docker: ALL浪费时间。严重地。只需像@neo上面所说的那样并更新react-scripts即可。前任。```npm 我的反应脚本@最新``` (7认同)
  • 这解决了我的 CI 构建的问题,而无需在版本控制或安全性方面倒退(即增加构建中的松散末端的技术债务)。或许应该是 2022 年底的最佳答案。 (6认同)
  • 对于那些使用纱线的人:纱线添加反应脚本。之后您可能会收到 core-js 错误,那么您应该运行:yarn add core-js (4认同)
  • 这并没有更新 webpack 版本。将反应脚本更新到最新版本后,我仍然遇到相同的错误。 (2认同)

Rob*_*ink 92

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

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

Vue.js 使用MD4算法来生成哈希值(好吧,实际上它的底层是Webpack )。出于此类目的, MD4 可以轻松地被MD5替换。所使用的算法类型在大多数地方都是硬编码的,因此没有任何方法可以配置其他算法。

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

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);
  };
}
Run Code Online (Sandbox Code Playgroud)

  • 这是最优雅的解决方案,它也解决了md4的使用并使用md5。(请参阅链接到 /sf/answers/5173282271/ 的 @JoshBowden 的评论,其中描述了潜在的问题。) (8认同)
  • @Lucas它之所以有效,是因为“crypto”是一个单例。每次程序(在同一个 NodeJS 运行时)调用 `require("crypto")` 时,都会返回完全相同的对象。 (7认同)
  • 这是最好的答案:它不会禁用安全功能,也不需要返回到 Node 16。它只是正确地覆盖过时的算法。谢谢。 (7认同)

Jay*_*Pow 86

2023 年 4 月更新:

该答案首次​​发布于 2021 年 12 月,已经过去一年多了,因此该答案可能不再那么可靠或相关。有关此问题背后的更多原因和最新解决方案,请参阅其他答案。

一些热门答案不起作用。

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

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

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

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

最简单的事情就是从 降级node.js V17node.js V16。有关如何降级的信息,请参阅这篇文章node.js

  • 确认将版本降级到“V.16”解决了该问题。`nvm install v16 && nvm alias default v16 && nvm use v16` 。 (14认同)
  • 降级不是一个好的选择 (8认同)
  • 从 v17 降级到 v16 修复了该问题 (2认同)
  • 是的,这个解决方案非常有效。我的工作站中有 V17,并面临这个问题。而我的 GitHub 操作中的相同“package.json”使用 V16,并且不会发生此错误。谢谢! (2认同)

Gre*_*reg 86

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

来自Webpack的output.hashFunction文档:

从 Webpack v5.54.0+ 开始,hashFunction支持xxhash64更快的算法, experiments.futureDefaults启用时将默认使用该算法。

解决方案是:

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

在你的 Webpack 配置中。

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

  • 如果像我一样,您进行了此更改但仍然遇到问题,那么请检查您的加载程序。`file-loader` 和 `css-loader` 默认使用 `md4`。您可以在设置名称选项时强制它们使用另一种哈希算法,如下所示:“[name].[sha512:hash:6].[ext]” (6认同)
  • 很抱歉,但这个答案根本不起作用...当您将experiments.futureDeafults更改为true时 - webpack抛出错误:“experiments是无效的配置对象,并且当将输出hashFunction设置为xxhash64时,您会收到错误Paul Razvan Berg 上面提到的 - 这个答案需要进一步解释或完全删除 - 它给我带来的问题比它解决的问题还要多。 (6认同)
  • 将 `output.hashFunction` 设置为 `xxhash64` 时出现“错误:不支持摘要方法”错误。也许是因为我使用的是 Webpack v4? (4认同)

Man*_*mar 81

适用于 macOS、Windows 和 Linux

更新到Node.js版本 18.17.1 后,我在本地主机上运行时遇到了这个问题,我可以通过更新package.json文件中的启动命令来解决它。

请在下面找到适当的命令。

"start": "export NODE_OPTIONS=--openssl-legacy-provider && react-scripts start"
Run Code Online (Sandbox Code Playgroud)

您也可以使用npm audit fix --force. 这也可以解决这个问题,但不知何故它对我不起作用。

  • Windows 用户可以使用 `set` 代替 `export`,例如:`"start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start"` (13认同)

小智 79

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

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

set NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

对于 Unix,请使用:

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

  • 这本质上是[Ajoy Karmakar的答案](/sf/ask/4878498971/#69699772)的重复(也没有任何解释)。 (9认同)
  • 谢谢,它成功了。但是你能解释一下为什么会发生这种情况以及这个命令如何解决这个问题吗? (8认同)

dav*_*ouk 62

这是 Node.js 版本。

我在 Node.js 17 上遇到此错误,但是当我使用nvm.

  • 同样在这里。恢复到节点 16 解决了该问题。 (13认同)
  • 如果您使用包管理器 Chocolatey,则只需“choco uninstall nodejs”和“choco install nodejs-lts”即可安装 Node 的 LTS 版本。 (4认同)
  • 是的。刚才尝试运行安全帽测试时遇到的。我很想听听具体原因。 (2认同)
  • 不知何故,这个错误也发生在我的节点 v16 上...... (2认同)

小智 45

对于Vue.js相关

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

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

    export NODE_OPTIONS=--openssl-legacy-provider
    
    Run Code Online (Sandbox Code Playgroud)

    在 Windows 命令提示符下:

    set NODE_OPTIONS=--openssl-legacy-provider
    
    Run Code Online (Sandbox Code Playgroud)

    在 PowerShell 上:

    $env:NODE_OPTIONS = "--openssl-legacy-provider"
    
    Run Code Online (Sandbox Code Playgroud)
  2. package.json中

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

    "scripts": {
        "serve": "vue-cli-service serve --openssl-legacy-provider",
     },
    
    Run Code Online (Sandbox Code Playgroud)


小智 39

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

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

  • 版本 v16.13.0 而不是 17.x 对我来说也很有效。我也不需要删除“node_modules”文件夹。 (11认同)

Vik*_*rMS 39

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

更新于 2022 年 12 月

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

nvm install 16 --lts
nvm use 16
Run Code Online (Sandbox Code Playgroud)

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

  • 这将不再有效,因为 LTS 现在是 18 (12认同)

小智 37

我有同样的错误。

我的情况:

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

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

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

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

"react-scripts": "^5.0.1",
Run Code Online (Sandbox Code Playgroud)


Bad*_*laj 34

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

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)

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


小智 26

对于 Angular 应用程序:

您还可以编辑npm startpackage.json 中的脚本。代替

"start": "ng serve -o"
Run Code Online (Sandbox Code Playgroud)

"start": "set NODE_OPTIONS=--openssl-legacy-provider && ng serve -o"
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我使用 Node v18.14.0 运行 Angular 9 应用程序的解决方案。 (2认同)

ahm*_*ira 26

视窗

  1. 安装nvm-windows

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

    nvm install 16
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更改您的 Node.js 版本

    nvm use 16
    
    Run Code Online (Sandbox Code Playgroud)
  4. 检查安装的 Node.js 版本

    nvm list
    
    Run Code Online (Sandbox Code Playgroud)

苹果系统

只需设置NODE_OPTIONS然后重新启动即可:

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)


小智 20

当项目上的包未更新并且您使用的React 版本不是最新时,这是一个常见错误。

要解决此问题,您需要按以下方式更改package.json文件:

改变这个

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
}
Run Code Online (Sandbox Code Playgroud)

对此

"scripts": {
    "start": "react-scripts --openssl-legacy-provider start",
    "build": "react-scripts --openssl-legacy-provider build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
}
Run Code Online (Sandbox Code Playgroud)


San*_*nam 19

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

RUN export NODE_OPTIONS=--openssl-legacy-provider && yarn build && yarn install --production --ignore-scripts --prefer-offline
Run Code Online (Sandbox Code Playgroud)

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


小智 19

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

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

适用于 macOS、Linux 或 Windows Git Bash

export NODE_OPTIONS=--openssl-legacy-provider
Run Code Online (Sandbox Code Playgroud)


Kar*_*ana 18

运行审核为我解决了问题

npm audit fix --force
Run Code Online (Sandbox Code Playgroud)


Net*_*ite 17

作为 2022 年的读者,所有答案都没有解决这个问题已为 Webpack 5 用户解决的问题(但没有向后移植到 Webpack 4)。如果您使用的是 Webpack 5,只需升级到至少5.61.0. 请参阅此处有关跟踪此问题的线程的评论。

  • 谢谢你!这个答案帮助我以合理的方式解决了这个问题。这就像页面上的第 22 个答案,但它是迄今为止最合理的。错误发生在 webpack 内部。所以更新 webpack 是有意义的。我更新到了 webpack 的最新版本,现在我不再看到这个错误了。其他答案基本上是 1. 隐藏错误消息 2. 升级所有依赖项或 3. 降级您的依赖项。公平地说,这些答案将使错误消息消失。但它们并不是最好的答案。 (2认同)

bri*_*081 15

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

\n

请随意纠正。

\n

package.json最初,让\xe2\x80\x99s 说这是我文件的脚本部分:

\n
...\n"version": "1.0.0",\n  "scripts": {\n    ...\n    "build": "npm run build:test-app:testing",\n    "build:test-app:testing": "ng build test-app --deploy-url  https://test-app.com/ --configuration=test-config",\n    ...\n  },\n  "private": true,\n...\n
Run Code Online (Sandbox Code Playgroud)\n

为了使用它,export NODE_OPTIONS=--openssl-legacy-provider您可以执行以下操作:

\n
"version": "1.0.0",\n  "scripts": {\n....\n    "build": "NODE_OPTIONS=--openssl-legacy-provider npm run build:test-app:testing\xe2\x80\x9d,\n    "build:test-app:testing": "NODE_OPTIONS=--openssl-legacy-provider ng build test-app --deploy-url  https://test-app.com/ --configuration=test-config"\n...\n  },\n  "private": true,\n
Run Code Online (Sandbox Code Playgroud)\n

记下构建脚本。我添加了一个选项:NODE_OPTIONS=--openssl-legacy-provider

\n

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

\n

对于那些能够灵活更改构建系统的 Node.js 版本的人,只需切换到低于 17 的版本即可,例如版本 16。

\n

对于 Docker,最初使用它的用例总是提取最新版本:

\n
...\nFROM node:alpine\n...\n
Run Code Online (Sandbox Code Playgroud)\n

您可以切换到类似的内容:

\n
...\nFROM node:16-alpine3.12\n...\n
Run Code Online (Sandbox Code Playgroud)\n


小智 15

查看

node -v
v17.4.0
Run Code Online (Sandbox Code Playgroud)

然后回滚到 node --lts (node v16.13.2 (npm v8.1.2)) 以使用nvm

nvm install 16
Run Code Online (Sandbox Code Playgroud)

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

  • 我正在使用 v16.13.2 并且出现此错误 (5认同)

Art*_*ary 15

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

"scripts": {
  "dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt"
}
Run Code Online (Sandbox Code Playgroud)


Hir*_*age 15

"scripts": {
  "start": "react-scripts --openssl-legacy-provider start",
  "build": "react-scripts --openssl-legacy-provider build",
}
Run Code Online (Sandbox Code Playgroud)

这对我有用。


Abd*_*shi 13

这个解决方案对我有用。

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

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

就这样。

  • 但为什么?为什么node v17有问题 (6认同)
  • @Evergreen 这很可能是 webpack4 问题,也在版本 17 中 Node.js 开发人员已弃用导入映射规范中不支持的尾部斜杠模式映射。Node.js 开发人员需要尽快解决这个问题。 (3认同)

Jos*_*den 12

这个答案是一个直接的 OpenSSL 系统级解决方法,无需触及之前工作的构建配置。

\n

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

\n

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

\n
\n

系统级 OpenSSL 解决方法

\n

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

\n

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

\n

(不幸的是,以下内容仅经过测试可在 Linux 上运行)。

\n
    \n
  1. 备份现有的 OpenSSL 配置:\nsudo cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.BAK

    \n
  2. \n
  3. 附加(或取消注释)以下配置以启用旧的“提供者”(OpenSSL 称之为)。您可能想要sudo vim /etc/ssl/openssl.cnf或类似的。

    \n
    [provider_sect]\ndefault = default_sect\nlegacy = legacy_sect\n\n[default_sect]\nactivate = 1\n\n[legacy_sect]\nactivate = 1\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 像以前一样重新运行节点脚本。

    \n
  6. \n
  7. 之后禁用旧提供程序

    \n

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

    \n
  8. \n
\n

该解决方案来自对类似问题的回答

\n
\n

根本原因是什么?

\n

Node 在 *nix 系统上使用 OpenSSL 进行哈希函数和加密。最新版本的 OpenSSL 默认情况下禁用 MD4\xe2\x80\x94这将破坏任何以前使用 MD4 的工作程序。考虑到这一点,任何认为使用 MD4 进行文件哈希是“好主意”的 npm 软件包现在都已损坏\xe2\x80\x94,尽管自 1996 年以来 RSA 实验室就认为 MD4 已损坏MD4 也于 2011 年被RFC 6150 “正式”列为过时。

\n


Don*_*Liu 11

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

\n

日志

\n
D:\\code\\rust\\hoppscotch-app\\hoppscotch>pnpm install && pnpm run generate\nScope: all 5 workspace projects\nLockfile is up-to-date, resolution step is skipped\nAlready up-to-date\npackages/codemirror-lang-graphql prepare$ rollup -c\n\xe2\x94\x82 Browserslist: caniuse-lite is outdated. Please run:\n\xe2\x94\x82   npx browserslist@latest --update-db\n\xe2\x94\x82   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating\n\xe2\x94\x82\n\xe2\x94\x82 src/index.js \xe2\x86\x92 dist/index.cjs, ./dist...\n\xe2\x94\x82 created dist/index.cjs, ./dist in 2.8s\n\xe2\x94\x94\xe2\x94\x80 Done in 4.8s\npackages/hoppscotch-data prepare$ tsup src --dts\n[20 lines collapsed]\n\xe2\x94\x82 CJS dist\\chunk-LZ75CAKS.js     13.00 B\n\xe2\x94\x82 DTS Build start\n\xe2\x94\x82 DTS \xe2\x9a\xa1\xef\xb8\x8f Build success in 2261ms\n\xe2\x94\x82 DTS dist\\index.d.ts              714.00 B\n\xe2\x94\x82 DTS dist\\rest\\index.d.ts         2.18 KB\n\xe2\x94\x82 DTS dist\\graphql\\index.d.ts      589.00 B\n\xe2\x94\x82 DTS dist\\collection\\index.d.ts   1.30 KB\n\xe2\x94\x82 DTS dist\\rest\\content-types.d.ts 473.00 B\n\xe2\x94\x82 DTS dist\\rest\\HoppRESTAuth.d.ts  882.00 B\n\xe2\x94\x82 DTS dist\\type-utils.d.d.ts       1.00 B\n\xe2\x94\x94\xe2\x94\x80 Done in 3.8s\npackages/hoppscotch-js-sandbox postinstall$ pnpm run build\n\xe2\x94\x82 > @hoppscotch/js-sandbox@1.0.0 build D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-js-sandbox\n\xe2\x94\x82 > npx tsc\n\xe2\x94\x94\xe2\x94\x80 Done in 8.7s\n. prepare$ husky install\n\xe2\x94\x82 husky - Git hooks installed\n\xe2\x94\x94\xe2\x94\x80 Done in 300ms\npackages/hoppscotch-app postinstall$ pnpm run gql-codegen\n[12 lines collapsed]\n\xe2\x94\x82 [14:58:01] Load GraphQL documents [started]\n\xe2\x94\x82 [14:58:01] Load GraphQL documents [completed]\n\xe2\x94\x82 [14:58:01] Generate [started]\n\xe2\x94\x82 [14:58:01] Generate [completed]\n\xe2\x94\x82 [14:58:01] Generate helpers/backend/backend-schema.json [completed]\n\xe2\x94\x82 [14:58:02] Load GraphQL documents [completed]\n\xe2\x94\x82 [14:58:02] Generate [started]\n\xe2\x94\x82 [14:58:02] Generate [completed]\n\xe2\x94\x82 [14:58:02] Generate helpers/backend/graphql.ts [completed]\n\xe2\x94\x82 [14:58:02] Generate outputs [completed]\n\xe2\x94\x94\xe2\x94\x80 Done in 4s\n\n> hoppscotch-app@2.2.1 generate D:\\code\\rust\\hoppscotch-app\\hoppscotch\n> pnpm -r do-build-prod\n\nScope: 4 of 5 workspace projects\npackages/hoppscotch-js-sandbox do-build-prod$ pnpm run build\n\xe2\x94\x82 > @hoppscotch/js-sandbox@1.0.0 build D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-js-sandbox\n\xe2\x94\x82 > npx tsc\n\xe2\x94\x94\xe2\x94\x80 Done in 7.5s\npackages/hoppscotch-app do-build-prod$ pnpm run generate\n\xe2\x94\x82 > hoppscotch-app@2.2.1 generate D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-app\n\xe2\x94\x82 > nuxt generate --modern\n\xe2\x94\x82 i Sentry reporting is disabled (no DSN has been provided)\n\xe2\x94\x82 i Production build\n\xe2\x94\x82 i Bundling only for client side\n\xe2\x94\x82 i Target: static\n\xe2\x94\x82 i Using components loader to optimize imports\n\xe2\x94\x82 i Discovered Components: node_modules/.cache/nuxt/components/readme.md\n\xe2\x94\x82 \xe2\x88\x9a Builder initialized\n\xe2\x94\x82 \xe2\x88\x9a Nuxt files generated\n\xe2\x94\x82 i Compiling Client\n\xe2\x94\x82  ERROR  Error: error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82     at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82     at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82     at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82     at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_module\n\xe2\x94\x82     at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\l\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at runSyncOrAsync (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at Array.<anonymous> (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loa\n\xe2\x94\x82     at Storage.finished (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\enhanced-resolve@4.5.0\\node_modules\\e\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\enhanced-resolve@4.5.0\\node_modules\\enhanced-resolve\\li\n\xe2\x94\x82  WARN  Browserslist: caniuse-lite is outdated. Please run:\n\xe2\x94\x82   npx browserslist@latest --update-db\n\xe2\x94\x82   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating\n\xe2\x94\x82  ERROR  error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82   at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82   at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82   at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\u\n\xe2\x94\x82   at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\\n\xe2\x94\x82   at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js:5\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js:3\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Loader\n\xe2\x94\x82   at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\lo\n\xe2\x94\x82   at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\lo\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Loader\n\xe2\x94\x82   at context.callback (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\babel-loader@8.2.3_@babel+core@7.16.12\\node_modules\\babel\n\xe2\x94\x82 D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\LoaderRunne\n\xe2\x94\x82                       throw e;\n\xe2\x94\x82                       ^\n\xe2\x94\x82 Error: error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82     at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82     at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82     at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82     at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_module\n\xe2\x94\x82     at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\l\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at context.callback (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\load\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\cache-loader@4.1.0_webpack@4.46.0\\node_modules\\cache-lo\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\graceful-fs@4.2.8\\node_modules\\graceful-fs\\graceful-fs.\n\xe2\x94\x82     at FSReqCallback.oncomplete (node:fs:201:23) {\n\xe2\x94\x82   opensslErrorStack: [ \'error:03000086:digital envelope routines::initialization error\' ],\n\xe2\x94\x82   library: \'digital envelope routines\',\n\xe2\x94\x82   reason: \'unsupported\',\n\xe2\x94\x82   code: \'ERR_OSSL_EVP_UNSUPPORTED\'\n\xe2\x94\x82 }\n\xe2\x94\x82 Node.js v18.4.0\n\xe2\x94\x82 \xe2\x80\x89ELIFECYCLE\xe2\x80\x89 Command failed with exit code 1.\n\xe2\x94\x94\xe2\x94\x80 Failed in 8.3s\nD:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-app:\n\xe2\x80\x89ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL\xe2\x80\x89 hoppscotch-app@2.2.1 do-build-prod: `pnpm run generate`\nExit status 1\n\xe2\x80\x89ELIFECYCLE\xe2\x80\x89 Command failed with exit code 1.\n\nD:\\code\\rust\\hoppscotch-app\\hoppscotch>npx browserslist@latest --update-db\nNeed to install the following packages:\n  browserslist@4.20.4\nOk to proceed? (y) y\nLatest version:     1.0.30001357\nUpdating caniuse-lite version\n$ pnpm up caniuse-lite\ncaniuse-lite has been successfully updated\n\nNo target browser changes\n\nD:\\code\\rust\\hoppscotch-app\\hoppscotch>pnpm install && pnpm run generate\nScope: all 5 workspace projects\nLockfile is up-to-date, resolution step is skipped\nAlready up-to-date\npackages/codemirror-lang-graphql prepare$ rollup -c\n\xe2\x94\x82 Browserslist: caniuse-lite is outdated. Please run:\n\xe2\x94\x82   npx browserslist@latest --update-db\n\xe2\x94\x82   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating\n\xe2\x94\x82\n\xe2\x94\x82 src/index.js \xe2\x86\x92 dist/index.cjs, ./dist...\n\xe2\x94\x82 created dist/index.cjs, ./dist in 2.8s\n\xe2\x94\x94\xe2\x94\x80 Done in 4.8s\npackages/hoppscotch-data prepare$ tsup src --dts\n[20 lines collapsed]\n\xe2\x94\x82 CJS dist\\chunk-JUWXSDKJ.js     1010.00 B\n\xe2\x94\x82 DTS Build start\n\xe2\x94\x82 DTS \xe2\x9a\xa1\xef\xb8\x8f Build success in 2250ms\n\xe2\x94\x82 DTS dist\\index.d.ts              714.00 B\n\xe2\x94\x82 DTS dist\\rest\\index.d.ts         2.18 KB\n\xe2\x94\x82 DTS dist\\graphql\\index.d.ts      589.00 B\n\xe2\x94\x82 DTS dist\\collection\\index.d.ts   1.30 KB\n\xe2\x94\x82 DTS dist\\rest\\content-types.d.ts 473.00 B\n\xe2\x94\x82 DTS dist\\rest\\HoppRESTAuth.d.ts  882.00 B\n\xe2\x94\x82 DTS dist\\type-utils.d.d.ts       1.00 B\n\xe2\x94\x94\xe2\x94\x80 Done in 3.7s\npackages/hoppscotch-js-sandbox postinstall$ pnpm run build\n\xe2\x94\x82 > @hoppscotch/js-sandbox@1.0.0 build D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-js-sandbox\n\xe2\x94\x82 > npx tsc\n\xe2\x94\x94\xe2\x94\x80 Done in 8.5s\n. prepare$ husky install\n\xe2\x94\x82 husky - Git hooks installed\n\xe2\x94\x94\xe2\x94\x80 Done in 335ms\npackages/hoppscotch-app postinstall$ pnpm run gql-codegen\n[12 lines collapsed]\n\xe2\x94\x82 [15:02:37] Load GraphQL documents [started]\n\xe2\x94\x82 [15:02:37] Load GraphQL documents [completed]\n\xe2\x94\x82 [15:02:37] Generate [started]\n\xe2\x94\x82 [15:02:37] Generate [completed]\n\xe2\x94\x82 [15:02:37] Generate helpers/backend/backend-schema.json [completed]\n\xe2\x94\x82 [15:02:38] Load GraphQL documents [completed]\n\xe2\x94\x82 [15:02:38] Generate [started]\n\xe2\x94\x82 [15:02:38] Generate [completed]\n\xe2\x94\x82 [15:02:38] Generate helpers/backend/graphql.ts [completed]\n\xe2\x94\x82 [15:02:38] Generate outputs [completed]\n\xe2\x94\x94\xe2\x94\x80 Done in 3.8s\n\n> hoppscotch-app@2.2.1 generate D:\\code\\rust\\hoppscotch-app\\hoppscotch\n> pnpm -r do-build-prod\n\nScope: 4 of 5 workspace projects\npackages/hoppscotch-js-sandbox do-build-prod$ pnpm run build\n\xe2\x94\x82 > @hoppscotch/js-sandbox@1.0.0 build D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-js-sandbox\n\xe2\x94\x82 > npx tsc\n\xe2\x94\x94\xe2\x94\x80 Done in 6.9s\npackages/hoppscotch-app do-build-prod$ pnpm run generate\n\xe2\x94\x82 > hoppscotch-app@2.2.1 generate D:\\code\\rust\\hoppscotch-app\\hoppscotch\\packages\\hoppscotch-app\n\xe2\x94\x82 > nuxt generate --modern\n\xe2\x94\x82 i Sentry reporting is disabled (no DSN has been provided)\n\xe2\x94\x82 i Production build\n\xe2\x94\x82 i Bundling only for client side\n\xe2\x94\x82 i Target: static\n\xe2\x94\x82 i Using components loader to optimize imports\n\xe2\x94\x82 i Discovered Components: node_modules/.cache/nuxt/components/readme.md\n\xe2\x94\x82 \xe2\x88\x9a Builder initialized\n\xe2\x94\x82 \xe2\x88\x9a Nuxt files generated\n\xe2\x94\x82 i Compiling Client\n\xe2\x94\x82  ERROR  Error: error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82     at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82     at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82     at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82     at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_module\n\xe2\x94\x82     at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\l\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Load\n\xe2\x94\x82     at runSyncOrAsync (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader\n\xe2\x94\x82     at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\\n\xe2\x94\x82     at Array.<anonymous> (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loa\n\xe2\x94\x82     at Storage.finished (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\enhanced-resolve@4.5.0\\node_modules\\e\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\enhanced-resolve@4.5.0\\node_modules\\enhanced-resolve\\li\n\xe2\x94\x82  WARN  Browserslist: caniuse-lite is outdated. Please run:\n\xe2\x94\x82   npx browserslist@latest --update-db\n\xe2\x94\x82   Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating\n\xe2\x94\x82  ERROR  error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82   at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82   at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82   at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\u\n\xe2\x94\x82   at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\\n\xe2\x94\x82   at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js:5\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js:3\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Loader\n\xe2\x94\x82   at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\lo\n\xe2\x94\x82   at iterateNormalLoaders (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\lo\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\Loader\n\xe2\x94\x82   at context.callback (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader\n\xe2\x94\x82   at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\babel-loader@8.2.3_@babel+core@7.16.12\\node_modules\\babel\n\xe2\x94\x82 D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\loader-runner@2.4.0\\node_modules\\loader-runner\\lib\\LoaderRunne\n\xe2\x94\x82                       throw e;\n\xe2\x94\x82                       ^\n\xe2\x94\x82 Error: error:0308010C:digital envelope routines::unsupported\n\xe2\x94\x82     at new Hash (node:internal/crypto/hash:67:19)\n\xe2\x94\x82     at Object.createHash (node:crypto:133:10)\n\xe2\x94\x82     at module.exports (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\n\xe2\x94\x82     at NormalModule._initBuildHash (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_module\n\xe2\x94\x82     at handleParseError (D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\l\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\NormalModule.js\n\xe2\x94\x82     at D:\\code\\rust\\hoppscotch-app\\hoppscotch\\node_modules\\.pnpm\\webpack@4.46.0\\node_modules\\webpack\\lib\\Norm


小智 11

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

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

将文件stableHash.js从 md4 更改为 md5 ,如下所示:

在此输入图像描述


小智 7

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

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

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

nvm list
Run Code Online (Sandbox Code Playgroud)

其次,安装版本12或14:

nvm install v12.22.8
Run Code Online (Sandbox Code Playgroud)

  • 降级并不是一个安全且长期可行的解决方案。 (2认同)

Nas*_*r X 7

在 PowerShell 中:

$env:NODE_OPTIONS = "--openssl-legacy-provider"
Run Code Online (Sandbox Code Playgroud)

它适用于 Node.js v18.7.0。


Sar*_*iju 6

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

  • 是的,它有效,但不是解决方案。 (10认同)

小智 6

npm update为我修好了。尼普V18


小智 5

当我迁移React项目以支持 TypeScript 时,我遇到了同样的错误。

  1. 删除node_modules文件夹
  2. 运行npm install命令
  3. 运行npm audit fix --force命令
  4. 尝试启动服务器

这对我有用。