工头开始挂起
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
也失败了,那应该成为要解决的问题,而不是你目前与工头的问题。
我正在尝试制作一个快速的(目前正在运行的)应用程序来使用 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
也失败了,那应该成为要解决的问题,而不是你目前与工头的问题。