我正在尝试在运行Phusion Paggenger(apache)的服务器上运行express.js应用程序,并且看到错误“启动Web应用程序时出错:它没有及时写入启动响应。”请求超时后。我读过https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems,但这看起来有点模糊。我的快递应用程序尽可能简单,所以我想知道是否有人知道是否有可能导致此问题的特定组件。我已经能够在服务器上运行具有相同设置的普通node.js应用程序。
答案 0 :(得分:8)
如果使用express-generator
命令设置项目,您可能会看到将虚拟主机配置文件的PassengerStartupFile
行指向bin/www
而不是app.js
技巧而不是在app.listen
文件中显式调用app.js
。 Phusion Passenger的documentation没有涉及ExpressJS采用的这一特定惯例。您可以在Express Moving to 4.x guide上阅读有关此bin/www
启动约定的一些内容。似乎为我工作。
答案 1 :(得分:3)
您似乎需要在app.js中明确调用app.listen。具体来说,我只在生产时这样做:
if (app.get('env') === 'production') {
app.listen(3000);
}
在app.js
的末尾答案 2 :(得分:0)
如果您是从Google到达这里。现在已记录在旅客中:https://www.phusionpassenger.com/library/indepth/nodejs/reverse_port_binding.html
一个简单的快速应用程序的工作示例如下:
if (typeof(PhusionPassenger) != 'undefined') {
PhusionPassenger.configure({ autoInstall: false });
}
var express = require('express');
var app = express();
app.get('/', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', body.length);
res.end(body);
});
if (typeof(PhusionPassenger) != 'undefined') {
app.listen('passenger');
} else {
app.listen(3000);
}