我有一个非常简单的TypeScript应用程序(使用Express.js构建),它运行在我部署到Heroku的Node上。我使用节点buildpack和zidizei/heroku-buildpack-tsc
,后者在部署时将.ts编译为JavaScript。
直到今天,当我尝试运行部署时,这已经运行良好。部署本身工作正常,但应用程序随后在运行启动脚本node ./dist/server.js
的位置崩溃。记录在这里:
Sep 06 14:43:33 goodlord-bark app/web.1: $ node ./dist/server.js
Sep 06 14:43:33 goodlord-bark heroku/web.1: Process exited with status 1
Sep 06 14:43:33 goodlord-bark heroku/web.1: State changed from starting to crashed
Sep 06 14:43:33 goodlord-bark app/web.1: error An unexpected error occurred: "EROFS: read-only file system, access '/usr/local/bin'".
Sep 06 14:43:33 goodlord-bark app/web.1: info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
任何脚本或我的应用都没有尝试写入/usr/local/bin
,所以我很困惑为什么会发生这种情况。这个错误只发生在对代码库和新部署的表面改变之后,所以它让我感到震惊,Heroku的结局发生了一些变化,但我可以深入了解它。
回滚到之前的部署使我的应用程序暂时运行,但我目前无法部署任何更新。
也没有/app/yarn-error.log
可供审查。
答案 0 :(得分:3)
我突然在Heroku上遇到了类似的问题。原来这个问题是在纱线1.0.0上引入的,Heroku默认使用最新版本。这是一个相关的heroku-buildpack-nodejs issue。
通过降低package.json的engines
部分中的纱线来修复:
"engines": {
"node": "^7.10.1",
"yarn": "0.27.5"
}