Express应用Heroku部署失败求助(附错误日志与配置)
解决Express应用部署Heroku的构建失败与H10错误
嘿,作为经常折腾Heroku部署的开发者,我一眼就看出你的问题出在跨平台脚本不兼容和依赖缺失上,咱们一步步搞定:
核心问题拆解
- 问题1:Windows专属命令在Linux环境失效
你prebuild脚本里的rd /s /q build是Windows系统专属的删除命令,而Heroku的服务器基于Linux,完全识别不了这个指令,直接导致构建第一步就卡壳。 - 问题2:shx依赖未安装
后来你换成了跨平台的shx rm -rf build,但没把shx添加到项目依赖里,Heroku构建时找不到这个工具,自然执行失败。 - 连锁反应:H10应用崩溃错误
因为prebuild脚本执行失败,整个构建流程直接中断,Heroku找不到可启动的应用文件,最终触发H10错误,导致应用无法访问。
具体修复步骤
1. 安装shx依赖
shx是一个能让你在跨平台环境下使用Unix命令行工具的包,先把它安装到项目的开发依赖(因为只在构建阶段用到):
npm install shx --save-dev
如果用yarn的话:
yarn add shx --dev
2. 更新package.json的scripts配置
把prebuild脚本改成纯跨平台的shx命令,彻底去掉Windows专属的rd命令:
{ "scripts": { "prebuild": "shx rm -rf build", // 你的其他脚本(比如build、start等)... } }
这样不管是在Windows本地开发,还是Heroku的Linux服务器上,这个命令都能正常执行。
3. 重新部署到Heroku
现在把修改后的代码提交到Git,然后重新推送到Heroku:
git add package.json package-lock.json git commit -m "Fix prebuild script for cross-platform compatibility" git push heroku master
额外验证小技巧
- 本地先测试脚本:执行
npm run prebuild,看看build文件夹是否被正确删除,确保本地没问题再推送到Heroku。 - 如果还是遇到H10错误,可以用
heroku logs --tail查看实时日志,确认是否还有其他遗漏的问题。
内容的提问来源于stack exchange,提问作者hwang
相关产品推荐
相关产品推荐

