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

React on Rails应用部署Heroku失败,求助解决依赖冲突问题

解决React on Rails部署Heroku时的peer依赖冲突问题

核心问题原因

你遇到的推送失败是因为react@18.2.0和react-beautiful-dnd@13.1.0的peer依赖不兼容——后者仅支持React 16.8.5至17.x版本,git push --force无法绕过Heroku的依赖校验环节,必须先解决冲突。

以下是几种不破坏应用的解决方案,按推荐优先级排序:

1. 替换为兼容React 18的拖拽库(长期最优方案)

react-beautiful-dnd已停止维护,官方推荐使用@dnd-kit,它完全兼容React 18:

  • 卸载旧依赖:npm uninstall react-beautiful-dnd
  • 安装@dnd-kit核心包及排序插件:npm install @dnd-kit/core @dnd-kit/sortable @dnd-kit/utilities
  • 重构代码中拖拽相关逻辑,替换为@dnd-kit的API(API设计类似,迁移成本较低)
  • 本地测试拖拽功能正常后,提交代码并推送:git add . && git commit -m "Replace react-beautiful-dnd with @dnd-kit for React 18 compatibility" && git push heroku main

2. 降级React到兼容版本

如果不想替换库,可将React降级到17.x版本(比如17.0.2):

  • 安装指定版本:npm install react@17.0.2 react-dom@17.0.2
  • 本地运行应用,确认所有组件功能正常(避免因版本降级引发其他问题)
  • 更新lock文件后提交代码,重新推送Heroku

3. 临时忽略peer依赖冲突(应急方案)

若需快速部署且暂时无法降级或替换库,可让npm忽略peer依赖校验:

  • 设置Heroku环境变量:heroku config:set NPM_CONFIG_LEGACY_PEER_DEPS=true
  • 或修改package.json的build命令,添加--legacy-peer-deps:
    "scripts": {
      "build": "npm install --legacy-peer-deps && react-scripts build"
    }
    
  • 提交修改后重新推送代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:48:26