2

我正在尝试在运行 Phusion Paggenger (apache) 的服务器上运行 express.js 应用程序,并看到错误“启动 Web 应用程序时发生错误:它没有及时写入启动响应。” 请求超时后。我已经阅读了https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems但这似乎有点晦涩难懂。我的 express 应用程序尽可能简单,所以我想知道是否有人知道是否有特定于 express 的组件可能会导致这种情况。我已经能够在服务器上运行具有相同设置的普通 node.js 应用程序。

4

3 回答 3

9

如果您使用该express-generator命令设置您的项目,您可能会看到是否将虚拟主机配置文件的PassengerStartupFile行指向bin/www而不是解决问题,app.js而不是显式调用文件。Phusion Passenger 的文档没有解决 ExpressJS 采用的这个特定约定。您可以在 Express 的Moving to 4.x 指南中阅读有关此启动约定的一些信息。似乎为我工作。app.listenapp.jsbin/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 回答