2015-02-24 130 views
0

我正在尝试使用Openshift的免费服务设置我的第一个Node.js + express web应用程序。Openshift总是给Node.js提供503错误应用程序

我在我的电脑上安装了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); 
}); 

回答

1

的问题是,该IP地址设置错误,则app.listen方法之后。所以,我不得不改变我的代码如下:

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