由于只读文件系统

时间:2017-09-06 13:57:10

标签: node.js heroku deployment

我有一个非常简单的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可供审查。

1 个答案:

答案 0 :(得分:3)

我突然在Heroku上遇到了类似的问题。原来这个问题是在纱线1.0.0上引入的,Heroku默认使用最新版本。这是一个相关的heroku-buildpack-nodejs issue

通过降低package.json的engines部分中的纱线来修复:

"engines": {
  "node": "^7.10.1",
  "yarn": "0.27.5"
}