我正在尝试在运行 Phusion Paggenger (apache) 的服务器上运行 express.js 应用程序,并看到错误“启动 Web 应用程序时发生错误:它没有及时写入启动响应。” 请求超时后。我已经阅读了https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems但这似乎有点晦涩难懂。我的 express 应用程序尽可能简单,所以我想知道是否有人知道是否有特定于 express 的组件可能会导致这种情况。我已经能够在服务器上运行具有相同设置的普通 node.js 应用程序。
问问题
2583 次
3 回答
9
如果您使用该express-generator
命令设置您的项目,您可能会看到是否将虚拟主机配置文件的PassengerStartupFile
行指向bin/www
而不是解决问题,app.js
而不是显式调用文件。Phusion Passenger 的文档没有解决 ExpressJS 采用的这个特定约定。您可以在 Express 的Moving to 4.x 指南中阅读有关此启动约定的一些信息。似乎为我工作。app.listen
app.js
bin/www
于 2015-12-03T01:55:13.513 回答
4
看来您需要在 app.js 中显式调用 app.listen。具体来说,我只在生产时这样做:
if (app.get('env') === 'production') {
app.listen(3000);
}
在 app.js 的末尾
于 2015-04-10T04:21:55.820 回答
1
如果你是从谷歌到这里的。这现在记录在乘客中: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);
}
于 2020-09-06T00:37:04.007 回答