无法运行node.js openshift app,错误:收听EACCESS

时间:2015-11-18 20:54:27

标签: node.js openshift

我浏览了其他几个与此相关的问题,我还没有找到解决方案。当我通过他们的网站登录开放班次并尝试打开我的应用程序时,我收到503 Service Unavailable错误。当我ssh到我的应用程序并尝试运行server.js时,我收到错误:

events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EACCES at errnoException (net.js:905:11) at Server._listen2 (net.js:1024:19)它只是继续这样几行。

我的server.js看起来像这样:

var express       = require('express'),
app               = express(),
bodyParser        = require('body-parser'),
mongoose          = require('mongoose'),
meetupsController = require('./server/controllers/meetups-controller');

var http = require('http');
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080); //testing
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'); //testing

//mongoose.connect('mongodb://localhost:27017/mean-demo'); //for local use

mongoose.connect('mongodb://user_name:password@host:port/mean-demo')
//note: mean-demo is name of the database not my appname.
//I have replaced mean-demo with my appname (testapp) and it still doesn't work

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.get('/', function(req, res){
    res.sendfile(__dirname + '/client/views/index.html');
});

app.use('/js', express.static(__dirname + '/client/js'));

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){ //testing
  console.log('Express server listening on port ' + app.get('port'));
});

//REST API
app.get('/api/meetups', meetupsController.list);
app.post('/api/meetups', meetupsController.create);

app.listen(8080, function(){ //was 3000
    console.log('I\'m Listening...');
}) //i have commented these out and the problem still isn't fixed

我已尝试对此代码实施各种更改,移动事物等等,但没有任何作用。我还注释了mongoose / mongodb调用,但我仍然得到错误。顺便说一下,这在本地版本的mongo DB中可以正常工作。我真的不知道如何解决这个问题,因此我们非常感谢一些指导。就像我之前说过的那样,我已经搜索了stackoverflow,很多人都有这个错误,但似乎没有什么能解决它们的问题。如果您需要任何其他信息,请告诉我,我很乐意提供这些信息。

编辑: 所以它现在正在运作。我认为发生的事情是这样的:我知道EADDRINUSE错误是在您访问已经在使用的端口时。我认为发生的事情是我的应用程序启动并运行,所以当我尝试运行它时,它试图运行它两次,然后抛出错误。我一直在openhift CLI上磨损了很长时间,我没有在网络浏览器上查看我的应用程序以查看它是否正常工作。多谢你们!

2 个答案:

答案 0 :(得分:0)

尝试参考此示例代码(https://github.com/openshift-quickstart/openshift-nodejs-http-and-websocket-example/blob/master/server.js

我认为你缺少的是那个

app.listen(8080, function(){ //was 3000
    console.log('I\'m Listening...');
})

应该是

app.listen( port, ipaddress, function() {
    console.log((new Date()) + ' Server is listening on port 8080');
});

基本上你正在监听正确的端口,但是你试图绑定到所有接口(0.0.0.0)而不是你的node.js端口。

答案 1 :(得分:0)

您正在拨打listen两次。第一个可能成功,但第二个失败了EACCES,因为有些东西已经在端口上侦听了。