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
相关产品推荐
相关产品推荐

