Node.js 17.0.1 Gatsby 错误-“数字信封例程::不支持 ... ERR_OSSL_EVP_UNSUPPORTED”

新手上路,请多包涵

我正在建立一个 盖茨比 网站。我将 Node.js 升级到 v17.0.1 ,当我运行构建时,出现错误:

 Error: digital envelope routines::unsupported

opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'

如果我将其降级到 v16,它可以正常工作,并且构建将成功。我怎样才能解决这个问题?

从谷歌搜索,这可能是一个类似的问题: _错误:错误:06065064:数字信封例程:EVP_DecryptFinal_ex:错误解密#48_

原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 680
2 个回答

Gatsby 必须使用 OpenSSL 3.0 默认不再允许的 算法或密钥大小

更新⚠️

这很可能是一个 webpack 问题 - https://github.com/webpack/webpack/issues/14532

他们已经在 5.61.0 版本 中发布了一个修复程序 - https://github.com/webpack/webpack/releases/tag/v5.61.0 - 所以升级 webpack 也应该解决这个问题

webpack 团队的一名成员 表示,他们不打算将修复程序向后移植到 webpack 4,因此如果您使用的是 webpack 4,您可能需要先考虑升级到 webpack 5。


来自 Node.js 17 的公告

如果您在使用 Node.js 17 的应用程序中遇到 ERR_OSSL_EVP_UNSUPPORTED 错误,则很可能您的应用程序或您正在使用的模块正在尝试使用默认情况下不再允许的算法或密钥大小OpenSSL 3.0。添加了一个新 的命令行选项 --openssl-legacy-provider 以恢复到旧提供程序,作为这些收紧限制的临时解决方法。

在终端上运行它可能如下所示:

 node --openssl-legacy-provider ./node_modules/.bin/gatsby build

您也可以通过 NODE_OPTIONS 环境变量传递它。

因此,如果您想继续使用 NPM 脚本,可以将 build 脚本更改为:

 // package.json
{
  "scripts": {
    "build": "export NODE_OPTIONS=--openssl-legacy-provider; gatsby build"
  }
}

原文由 romellem 发布,翻译遵循 CC BY-SA 4.0 许可协议

这可能会有所帮助。在 package.json 文件中添加这些脚本。

反应:

 "scripts": {
    "start": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts start",
    "build": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts build"
}

要么

"scripts": {
    "start": "react-scripts --openssl-legacy-provider start",
    "build": "react-scripts --openssl-legacy-provider build",
}

Vue.js:

 "scripts": {
    "serve": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
    "lint": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint"
},

要么

"scripts": {
    "serve": "vue-cli-service --openssl-legacy-provider serve",
    "build": "vue-cli-service --openssl-legacy-provider build",
    "lint": "vue-cli-service --openssl-legacy-provider lint"
},

原文由 Rajiv Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题