[英]Startup script for a Next.js app using Phusion Passenger (starting the production build using a file)?
[英]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.listen
在app.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.