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

Heroku部署Node.js代码遇依赖冲突问题求助

解决Heroku构建时的ERESOLVE依赖冲突问题

问题描述

执行git push heroku master后,Heroku构建环节运行heroku-postbuild脚本时触发ERESOLVE依赖解析失败。核心冲突是项目依赖的react@16.14.0与开发依赖@wojtekmaj/enzyme-adapter-react-17@0.6.6要求的peer依赖react@^17.0.0-0不兼容。

错误日志

remote: -----> Build
remote:        Running heroku-postbuild
remote:        
remote:        > mentordial@1.0.0 heroku-postbuild
remote:        > npm install --prefix client && npm run build --prefix client
remote:        
remote: npm ERR! code ERESOLVE
remote: npm ERR! ERESOLVE could not resolve
remote: npm ERR! 
remote: npm ERR! While resolving: @wojtekmaj/enzyme-adapter-react-17@0.6.6
remote: npm ERR! Found: react@16.14.0
remote: npm ERR! node_modules/react
remote: npm ERR!   react@"^16.13.1" from the root project
remote: npm ERR!   peer react@">=16.8.6" from @dytesdk/react-ui-kit@1.37.0
remote: npm ERR!   node_modules/@dytesdk/react-ui-kit
remote: npm ERR!     @dytesdk/react-ui-kit@"^1.37.0" from the root project
remote: npm ERR!   47 more (@dytesdk/react-web-core, @emotion/react, ...)
remote: npm ERR! 
remote: npm ERR! Could not resolve dependency:
remote: npm ERR! peer react@"^17.0.0-0" from @wojtekmaj/enzyme-adapter-react-17@0.6.6
remote: npm ERR! node_modules/@wojtekmaj/enzyme-adapter-react-17
remote: npm ERR!   dev @wojtekmaj/enzyme-adapter-react-17@"^0.6.6" from the root project
remote: npm ERR! 
remote: npm ERR! Conflicting peer dependency: react@17.0.2
remote: npm ERR! node_modules/react
remote: npm ERR!   peer react@"^17.0.0-0" from @wojtekmaj/enzyme-adapter-react-17@0.6.6
remote: npm ERR!   node_modules/@wojtekmaj/enzyme-adapter-react-17
remote: npm ERR!     dev @wojtekmaj/enzyme-adapter-react-17@"^0.6.6" from the root project
remote: npm ERR! 
remote: npm ERR! Fix the upstream dependency conflict, or retry
remote: npm ERR! this command with --force, or --legacy-peer-deps
remote: npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
remote: npm ERR! 
remote: npm ERR! See /tmp/npmcache.o3KAI/eresolve-report.txt for a full report.
remote: 
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR!     /tmp/npmcache.o3KAI/_logs/2024-06-03T21_45_52_893Z-debug-0.log
remote: 
remote: -----> Build failed

项目package.json配置

{
  "name": "test",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@babel/core": "^7.17.2",
    "@babel/preset-env": "^7.16.11",
    "@dytesdk/react-ui-kit": "^1.37.0",
    "@dytesdk/react-web-core": "^1.14.0",
    "@dytesdk/web-core": "^0.42.0",
    "@stripe/react-stripe-js": "^1.7.0",
    "@stripe/stripe-js": "^1.22.0",
    "@testing-library/jest-dom": "^5.16.1",
    "@testing-library/react": "^12.1.2",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.1",
    "@types/node": "^16.11.36",
    "@types/react": "^18.0.9",
    "@types/react-dom": "^18.0.5",
    "add-to-calendar-button": "^1.18.6",
    "amplitude-js": "^8.17.0",
    "availability-calendar-react": "^1.0.10",
    "axios": "^0.24.0",
    "babel-jest": "^27.5.1",
    "babel-preset-env": "^1.7.0",
    "bootstrap": "^5.1.3",
    "bootstrap-icons": "^1.7.2",
    "cors": "^2.8.5",
    "crypto-browserify": "^3.12.0",
    "htm": "^3.1.0",
    "itsa-react-multiselect": "^16.0.8",
    "jest": "^27.5.1",
    "jest-mock-axios": "^4.5.0",
    "jest-transform-css": "^3.0.0",
    "lodash": "^4.17.21",
    "moment": "^2.29.1",
    "moment-range": "^4.0.2",
    "moment-timezone": "^0.5.34",
    "multi-tier-menu": "^1.0.16",
    "process": "^0.11.10",
    "query-string": "^7.0.1",
    "react": "^16.13.1",
    "react-beforeunload": "^2.5.3",
    "react-bootstrap": "^2.1.0",
    "react-calendar": "^3.7.0",
    "react-copy-to-clipboard": "^5.1.0",
    "react-dom": "^16.13.1",
    "react-facebook-login": "^4.1.1",
    "react-google-charts": "^4.0.0",
    "react-hook-form": "^7.22.4",
    "react-languages-select": "^1.0.20",
    "react-meta-tags": "^1.0.1",
    "react-multi-search-select": "^1.3.0",
    "react-multi-select-component": "^4.1.14",
    "react-paypal-button-v2": "^2.6.3",
    "react-phone-input-2": "^2.15.0",
    "react-router-dom": "^5.2.0",
    "react-scripts": "5.0.0",
    "react-scroll-to-bottom": "^4.2.0",
    "react-select": "^5.2.1",
    "react-select-country-list": "^2.2.3",
    "react-select-timezone": "^1.0.0",
    "react-share-social": "^0.1.48",
    "react-simple-star-rating": "^4.0.5",
    "react-social-buttons": "^1.1.1",
    "react-stripe-elements": "^6.1.2",
    "react-timeslot-calendar": "^0.2.0",
    "react-timezone-select": "^1.1.15",
    "react-tz": "^1.0.0",
    "spacetime": "^7.1.0",
    "stream-browserify": "^3.0.0",
    "timezones-list": "^3.0.1",
    "ts-jest": "^27.1.3",
    "typescript": "^4.7.2",
    "web-vitals": "^2.1.2"
  },
  "scripts": {
    "start": "export HTTPS=true&&SSL_CRT_FILE=cert.pem&&SSL_KEY_FILE=key.pem react-scripts start",
    "build": "react-scripts build",
    "test": "jest",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/plugin-transform-modules-commonjs": "^7.16.8",
    "@wojtekmaj/enzyme-adapter-react-17": "^0.6.6",
    "enzyme": "^3.11.0",
    "enzyme-to-json": "^3.6.2",
    "esbuild": "^0.14.21",
    "esbuild-jest": "^0.5.0",
    "jest-cli": "^27.4.7",
    "moxios": "^0.4.0",
    "react-test-renderer": "^17.0.2"
  }
}

解决方案

  • 方案一:适配React版本降级Enzyme适配器
    项目使用React 16,无需React 17的适配器。将devDependencies中的@wojtekmaj/enzyme-adapter-react-17替换为@wojtekmaj/enzyme-adapter-react-16(版本可选择^0.6.6),同时把react-test-renderer降级到^16.14.0,与项目React版本保持一致。修改后执行npm install,再重新推送Heroku。

  • 方案二:在构建命令中添加依赖兼容参数
    修改heroku-postbuild脚本,添加--legacy-peer-deps参数跳过peer依赖严格检查:

    "heroku-postbuild": "npm install --legacy-peer-deps --prefix client && npm run build --prefix client"
    

    此方法可以快速解决构建失败问题,但可能存在潜在兼容性风险,建议本地测试后再推送。

  • 方案三:升级项目React到17.x版本
    如果项目其他依赖兼容React 17,可将dependencies中的react和react-dom版本升级到^17.0.2,同时确保react-router-dom、react-bootstrap等依赖也支持React 17。升级后,@wojtekmaj/enzyme-adapter-react-17的peer依赖要求将得到满足,冲突自然消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:37:00