You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js17.0.1运行Gatsby构建报ERR_OSSL_EVP_UNSUPPORTED如何解决

问题原因

该报错是Node.js v17及以上版本默认内置OpenSSL 3.0导致的,OpenSSL 3.0默认禁用了部分安全性不足的旧哈希算法,而旧版本Gatsby依赖的构建工具仍在使用这些被废弃的算法,因此触发初始化错误。Node.js v16版本内置的是OpenSSL 1.1.1版本,没有相关限制,因此回退版本后可以正常构建。

修复方案

下面提供三种不同适用场景的修复方式,可根据需求选择:

临时生效方案(单次构建生效)

在执行构建命令前,先在终端执行对应系统的环境变量配置命令:

  • Windows cmd 环境:set NODE_OPTIONS=--openssl-legacy-provider
  • Windows PowerShell 环境:$env:NODE_OPTIONS="--openssl-legacy-provider"
  • Linux/macOS 环境:export NODE_OPTIONS=--openssl-legacy-provider
    配置完成后再执行gatsby build或gatsby develop即可正常运行。

项目内永久生效方案

可以直接修改项目package.json的启动、构建脚本,无需每次手动配置环境变量:
如果你的项目仅在Linux/macOS环境运行,可以直接修改scripts字段如下:

{
  "scripts": {
    "develop": "NODE_OPTIONS=--openssl-legacy-provider gatsby develop",
    "build": "NODE_OPTIONS=--openssl-legacy-provider gatsby build"
  }
}

如果需要兼容Windows环境,可以先安装跨平台环境变量工具cross-env:
npm install cross-env --save-dev
再修改scripts字段:

{
  "scripts": {
    "develop": "cross-env NODE_OPTIONS=--openssl-legacy-provider gatsby develop",
    "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider gatsby build"
  }
}

根本修复方案

升级Gatsby及相关依赖到最新版本,新版Gatsby已经完成了OpenSSL 3.0的适配,不需要额外配置环境变量即可正常构建:
执行升级命令:
npm update gatsby
如果使用yarn作为包管理器,执行:
yarn upgrade gatsby
建议同时升级所有Gatsby相关插件,避免其他兼容问题。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:06:07