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

Shopware 6构建失败 eslint依赖冲突ERESOLVE报错问题求助

问题原因

这个报错是npm 7及以上版本的默认依赖解析规则变更导致的:

  • npm 7+版本会将peer依赖冲突从警告升级为硬错误,直接中断安装流程
  • Shopware 6.4.x 自带的@shopware-ag/eslint-config-base@1.0.0依赖eslint-config-airbnb-base@13.2.0,后者仅支持eslint 4.x/5.x版本
  • 项目内同时引入的@typescript-eslint/eslint-plugin@5.1.0要求eslint版本为6.x/7.x/8.x,两者版本要求互斥

你没有修改核心代码、重装实例仍复现、多套实例同时触发问题,都是因为环境中使用的npm 8.11.0默认开启了严格peer依赖校验,和Shopware核心代码本身是否改动无关。

解决方案(按推荐优先级排序)
  • 方案1:开启legacy peer依赖解析(最稳妥,生产环境推荐)
    执行构建前临时修改npm配置,让npm使用6.x版本的依赖解析逻辑,和Shopware 6.4发布时的官方构建行为保持一致,不会修改任何依赖版本,也不会影响构建产物:
    # 进入Shopware项目根目录后执行
    npm config set legacy-peer-deps true
    ./bin/build.sh
    
    构建完成后如果需要恢复npm默认配置,执行npm config set legacy-peer-deps false即可。
  • 方案2:通过overrides固定传递依赖版本(无需修改npm全局配置)
    npm 8+支持在项目根目录的package.json中添加overrides字段,强制升级冲突的依赖包到兼容版本:
    {
      "overrides": {
        "eslint-config-airbnb-base": "^15.0.0"
      }
    }
    
    修改完成后删除项目内的node_modules目录和package-lock.json文件,重新执行build.sh即可。该方案仅会升级eslint规则包版本,不会影响管理后台和店面的前端打包结果,可能出现少量额外的eslint格式提示,可忽略。
  • 方案3:降级npm到6.x版本(完全匹配官方原始构建环境)
    如果不想修改配置,可以将当前Node.js 16环境下的npm降级到6.x版本,从根本上规避严格peer依赖校验:
    npm install -g npm@6
    ./bin/build.sh
    
    如果你使用nvm等Node版本管理工具,可以单独给Shopware 6.4项目切换npm版本,避免影响其他项目。
避坑提示
  • 不要使用npm install --force参数强制安装,该参数会跳过所有依赖校验,可能导致安装的依赖存在隐性兼容问题,触发构建或运行时的未知JS错误。
  • 不需要重新下载安装Shopware核心包,也不需要修改核心目录下的任何配置文件,该问题和核心代码无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:42:28