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

Gatsby部署到Netlify/GitLab报ERESOLVE依赖错误是何原因

问题根因

报错来自npm 7及以上版本默认开启的严格peer依赖校验,和页面代码本身无关:

  • 你的项目指定安装的React版本为18.1.0
  • 项目依赖的@mdx-js/react@1.6.22声明的peer依赖范围仅覆盖React 16.13.1、React 17.x,不支持React 18
  • 本地构建正常是因为本地npm版本低于7,或者本地的lock文件跳过了严格校验;Netlify、GitLab CI的构建环境默认预装高版本npm,安装依赖时会强制校验所有peer依赖的匹配关系,冲突时直接终止构建流程,和你部署操作流程、页面代码复杂度没有关系。
修复方案

三选一即可:

  • 升级依赖到兼容版本
    将MDX相关依赖升级到原生支持React 18的版本,执行:
    npm install @mdx-js/react@^2.0.0 gatsby-plugin-mdx@^4.0.0
    
    升级后如果gatsby-config里的mdx插件配置有不兼容的地方,对照版本变更说明调整即可。
  • 关闭npm严格peer依赖校验
    不需要调整依赖版本的话,直接让npm跳过peer依赖校验即可:
    • 本地安装依赖时执行npm install --legacy-peer-deps
    • Netlify部署:在项目根目录新建.npmrc文件,写入legacy-peer-deps=true后提交到仓库,或者在站点环境变量中添加NPM_FLAGS = "--legacy-peer-deps"
    • GitLab CI部署:将CI脚本中的npm install命令修改为npm install --legacy-peer-deps
  • 锁定线上npm版本和本地一致
    在package.json中添加engines字段,指定和你本地运行一致的npm大版本,比如本地用npm 6的话配置如下:
    "engines": {
      "npm": "6.x"
    }
    
    Netlify、GitLab CI都会识别该配置,自动安装对应版本的npm,不会触发高版本的严格校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:18:09