使用react-boilerplate构建的应用在Heroku部署时出现应用错误
解决React-Boilerplate部署Heroku后启动崩溃的问题
从你提供的日志里,能直接定位到两个核心问题,正是它们导致了部署后的应用报错:
1. 启动环境与依赖不匹配
Heroku在构建完成后,会自动移除devDependencies中的依赖来减小部署体积,但你的npm start命令跑的是开发环境脚本:
cross-env NODE_ENV=development node server
而开发环境的webpack配置(internals/webpack/webpack.dev.babel.js)依赖glob这类仅在devDependencies中的模块,所以部署后自然会出现Cannot find module 'glob'的错误。
2. 针对性解决方案
方案一:修改启动命令为生产环境(推荐)
编辑项目根目录的package.json,将start命令替换为生产环境启动脚本,同时保留原开发命令方便本地调试:
"scripts": { "start": "cross-env NODE_ENV=production node server", "start:dev": "cross-env NODE_ENV=development node server", // 其他脚本保持不变 }
生产环境的启动逻辑不会依赖dev专属模块,而且你的构建日志显示heroku-postbuild已经成功生成了build文件夹,生产服务器能正确加载静态资源。
方案二:强制Heroku保留dev依赖(不推荐)
如果特殊场景下必须用开发环境启动(不建议生产环境这么做),可以通过环境变量关闭Heroku的dev依赖清理:
heroku config:set NPM_CONFIG_PRODUCTION=false
这个方法会大幅增加部署包体积,且生产环境加载dev依赖存在安全风险,仅作为临时测试使用。
验证修复效果
- 将修改后的
package.json推送到GitHub仓库 - 在Heroku控制台手动触发重新部署,或等待自动同步
- 用命令实时查看启动日志确认修复:
heroku logs --tail --app fast-lake-29656
内容的提问来源于stack exchange,提问作者袙谢邪写屑懈褉 袛芯褋褌
相关产品推荐
相关产品推荐

