对于Node.js应用程序,Openshift总是给出503错误

Openshift always gives 503 error for Node.js app

本文关键字:错误 Openshift Node js 应用程序 对于      更新时间:2024-05-06

我正在尝试使用Openshift的免费服务安装我的第一个Node.js+express web应用程序。

我在电脑上安装了node+npm和openshift工具,并尝试运行我的应用程序。在我的本地机器上,一切都很好,但当我把我的项目推到Openshift站点后,它总是给出'503 Service Unavailable'错误。

我尝试rhc app restart -a firstapp,但它没有解决问题。我还检查了package.json,它是正确的。

这是我的代码:

var express = require('express');
var app = express();
var fs      = require('fs');
var parser  = require('body-parser');
//Setup ip adress and port
var ipaddress ;
function initIPAdress() {
    var adr = process.env.OPENSHIFT_NODEJS_IP;
    if (typeof adr === "undefined") {
            //  Log errors on OpenShift but continue w/ 127.0.0.1 - this
            //  allows us to run/test the app locally.
            console.warn('No OPENSHIFT_NODEJS_IP var, using localhost');
            adr = 'localhost';
    }
    ipaddress = adr;
}
var port      = process.env.OPENSHIFT_NODEJS_PORT || 8080;

app.get('/', function (req, res) {
  res.send('Hello World!')
})
app.get('/admin', function (req, res) {
        res.setHeader('Content-Type', 'text/html'); 
        res.send( fs.readFileSync('./index_admin.html') );
})
app.listen(port, ipaddress, function() {
        initIPAdress();//Call setup ip adress
        console.log('%s: Node server started on %s:%d ...',
                        Date(Date.now() ), ipaddress, port);
});

问题是,在app.listen方法之后,IP地址设置不正确。因此,我不得不更改我的代码如下:

var express = require('express');
var app = express();
var fs      = require('fs');
var parser  = require('body-parser');
//Setup ip adress and port
var ipaddress ;
function initIPAdress() {
    var adr = process.env.OPENSHIFT_NODEJS_IP;
    if (typeof adr === "undefined") {
            //  Log errors on OpenShift but continue w/ 127.0.0.1 - this
            //  allows us to run/test the app locally.
            console.warn('No OPENSHIFT_NODEJS_IP var, using localhost');
            adr = 'localhost';
    }
    ipaddress = adr;
}
var port      = process.env.OPENSHIFT_NODEJS_PORT || 8080;

app.get('/', function (req, res) {
  res.send('Hello World!')
})
app.get('/admin', function (req, res) {
        res.setHeader('Content-Type', 'text/html'); 
        res.send( fs.readFileSync('./index_admin.html') );
})
initIPAdress(); //Setup IP adress before app.listen()
app.listen(port, ipaddress, function() {
        console.log('%s: Node server started on %s:%d ...',
                        Date(Date.now() ), ipaddress, port);
});