繁体   English   中英

PhusionPassenger 上的 Express.js 应用程序 - 没有及时编写启动响应

[英]Express.js App on Phusion Passenger - did not write a startup response in time

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

如果您使用的express-generator命令来设置你的项目,你可能会看到,如果指着虚拟主机配置文件的PassengerStartupFile线bin/www代替app.js的伎俩,而不是显式调用app.listenapp.js文件。 Phusion Passenger 的文档没有涉及 ExpressJS 采用的这个特定约定。 您可以在 Express 的移动到 4.x 指南中阅读有关此bin/www启动约定的一些内容。 似乎对我有用。

看来您需要在 app.js 中显式调用 app.listen。 具体来说,我只在生产时这样做:

if (app.get('env') === 'production') {
    app.listen(3000);
}

在 app.js 的末尾

如果你是从谷歌到这里的。 这现在与乘客一起记录: https : //www.phusionpassenger.com/library/indepth/nodejs/reverse_port_binding.html

下面是一个简单的 Express 应用程序的工作示例:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM