我浏览了其他几个与此相关的问题,我还没有找到解决方案。当我通过他们的网站登录开放班次并尝试打开我的应用程序时,我收到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上磨损了很长时间,我没有在网络浏览器上查看我的应用程序以查看它是否正常工作。多谢你们!
答案 0 :(得分:0)
我认为你缺少的是那个
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
,因为有些东西已经在端口上侦听了。