工头开始挂起

Foreman start hangs

我正在尝试制作一个快速的(目前正在运行的)应用程序来使用 foreman start

这是我的 Procfile:

web: node ./bin/www

这是我的 www 文件:

#!/usr/bin/env node
var debug = require('debug')('quiz');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

这是我的 package.json:

{
  "name": "quiz",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "engines": {
    "node": "0.10.x",
    "npm": "1.4.x"
  },
  "devDependencies": {
    "sqlite3": "^3.0.8"
  },
  "dependencies": {
    "body-parser": "~1.8.1",
    "cookie-parser": "~1.3.3",
    "debug": "~2.0.0",
    "ejs": "~0.8.5",
    "express": "~4.9.0",
    "express-partials": "^0.3.0",
    "morgan": "~1.3.0",
    "pg": "^4.1.1",
    "pg-hstore": "^2.3.2",
    "sequelize": "^1.7.0",
    "serve-favicon": "~2.1.3"
  }
}

当我在日志中 运行 foreman start 时一切正常:

23:17:21 web.1  | started with pid 1632

当我在浏览器中测试它时,请求显示在日志中,但没有到达浏览器。

这是我尝试浏览 http://localhost:5000/:

时的日志
23:20:56 web.1  | ←[0mGET / ←[32m200 ←[0m25.741 ms - 1404←[0m
23:20:56 web.1  | ←[0mGET /stylesheets/style.css ←[36m304 ←[0m5.098 ms - -←[0m
23:20:56 web.1  | ←[0mGET /stylesheets/wide.css ←[36m304 ←[0m4.419 ms - -←[0m

请求似乎已解决,但浏览器一直在无限期地等待响应。最后浏览器显示 ERR_EMPTY_RESPONSE.

我尝试发出一些其他任意请求,但结果相同:

23:23:08 web.1  | ←[0mGET /author ←[32m- ←[0m- ms - -←[0m
23:23:08 web.1  | ←[0mGET /stylesheets/smartphone.css ←[32m- ←[0m- ms - -←[0m
23:25:59 web.1  | ←[0mGET /author ←[32m- ←[0m- ms - -←[0m
23:28:00 web.1  | ←[0mGET /author ←[32m- ←[0m- ms - -←[0m
23:30:00 web.1  | ←[0mGET /author ←[32m- ←[0m- ms - -←[0m

知道如何调试它以了解发生了什么吗?

提前致谢。

Heroku no longer supports foreman 所以最好的方法是尝试使用他们推荐的替代工头的方法:heroku 命令 "local"。

实现很简单:

  • 下载并安装最新版本的 heroku toolbelt(不再包含 foreman)。

  • 不要使用 foreman start,而是使用 heroku local

有关 heroku local 的完整详细信息,请参阅 heroku 的网站。

虽然您没有提及,但您收到这些 ERR_EMPTY_RESPONSE 消息的原因是否可能是因为工头在处理请求时死亡(而不是 "hung")?在工头将消息 "sending SIGKILL to all processes" 记录到控制台并终止后,我在某些样式表上遇到了同样的问题。无论如何,当我使用 heroku local 而不是 foreman start 时,我的问题就消失了。

即使 heroku local 也失败了,那应该成为要解决的问题,而不是你目前与工头的问题。