2015-11-18 60 views
0

我浏览过与此相关的其他几个问题,我还没有找到一个解决方案。当我通过他们的网站登录打开班次并尝试打开我的应用程序时,出现503服务不可用错误。当我ssh到我的应用程序,并尝试运行server.js我得到的错误:无法获得的node.js openshift应用程序运行,ERROR:听EACCESS

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:[email protected]: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 

我试图实现这种代码的各种变化,走动的东西,等等,并没有什么作品。我还评论了猫鼬/ mongodb电话,我仍然得到错误。顺便说一下,这在本地使用mongo DB的本地版本工作。我真的不知道如何解决这个问题,所以一些指导将非常感谢。就像我之前说过的,我已经搜索了各种各样的stackoverflow,很多人都有这个错误,但是似乎没有解决它们的问题已经修复了我的错误。让我知道你是否需要任何其他信息,我会很乐意提供。

编辑: 所以它现在的工作。我认为发生的事情是这样的:我知道EADDRINUSE错误是当你访问一个已经被使用的端口时。我认为发生的事情是我的应用程序启动并运行,所以当我试图运行它时,它试图运行两次,并抛出错误。我一直在openshift CLI上磨了这么久,我没有打扰在网络浏览器上检查我的应用程序,看它是否工作。多谢你们!

回答

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端口。

+0

正如你可以从我的第一个电话听明白了,我做的端口和IP地址 – KPJ

0

你打电话listen两次。第一个可能成功,但第二个因EACCES而失败,因为某个端口上已有监听。

+0

我评论出来一段时间了,我想什么都没有发生调用它。但第二次看,我的错误从EACCES到EADDRINUSE。我会去寻找如何解决这个问题(除非你知道如何解决你的问题)。感谢您指点我正确的方向 – KPJ