我试图制作一个快速(当前正在工作)的应用程序来使用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/
时,这是de log:
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
我知道如何调试这个以便了解发生了什么?
提前致谢。
答案 0 :(得分:1)
Heroku no longer supports foreman所以最好的办法是尝试使用他们推荐的工头替代方法:heroku命令“local”。
实施是微不足道的:
下载并安装最新版本的heroku toolbelt(不再包括工头)。
而不是使用foreman start
使用heroku local
。
有关heroku local的完整详情,请参阅heroku的网站。
虽然你没有提到它,但是你得到那些ERR_EMPTY_RESPONSE消息的原因是因为工头在处理请求时死了(而不是“挂起”)?在工头将“向所有进程发送SIGKILL”消息记录到控制台并终止之后,我遇到了一些样式表的问题。无论如何,当我使用heroku local
代替foreman start
时,我的问题就消失了。
即使heroku local
也失败了,这应该成为解决问题的问题,而不是当前与领班的问题。