nodejs/express有时候不起作用

ash*_*ash -3 node.js express

我在centos服务器上运行nodejs和express.我做了下面的代码,当我做它时工作得很好......现在它的给出错误(我甚至没有触摸它).

奇怪的是,如果我删除所有的行并逐一添加它再次起作用; 但我不明白为什么它会停止工作?

我的代码:

App.js文件:

var express = require('express'),
mongo = require('mongodb').MongoClient,
http = require('http'),
path = require('path'),
bodyParser = require('body-parser'),
passport = require('passport-local'),
config = require('./config/config.json');
//CONNECT TO DATABASE - i removed the pass & username when posting
mongo.connect("mongodb://{username}:{pass}@ds037617.mongolab.com:37617/{db}", function (err, db) {
        if (err) {
        throw err;
        } else {
            console.log("successfully connected to the database");
        }
        db.close();
    });
    var publicUser = require('./routes/publicUser'),
    storeUser = require('./routes/publicUser'),
    adminUser = require('./routes/publicUser');
    app = express();
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');
    app.use('/', publicUser);
    app.use('/store', storeUser);
    app.use('/adminO', adminUser);
    //Load Statics
    app.use(express.static('public'));
    app.listen(80, function(){
    console.log('listening.........................................');
    });
Run Code Online (Sandbox Code Playgroud)

终端响应/错误:

30 Apr 18:23:00 - [nodemon] v1.3.7
30 Apr 18:23:00 - [nodemon] to restart at any time, enter `rs`
30 Apr 18:23:00 - [nodemon] watching: *.*
30 Apr 18:23:00 - [nodemon] starting `node app.js`
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EACCES
    at exports._errnoException (util.js:746:11)
    at Server._listen2 (net.js:1129:19)
    at listen (net.js:1172:10)
    at Server.listen (net.js:1257:5)
    at EventEmitter.app.listen (/home/ash/www/recruit/node_modules/express/lib/application.js:595:24)
    at Object.<anonymous> (/home/ash/www/recruit/app.js:28:6)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
30 Apr 18:23:01 - [nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)

ash*_*ash 5

显然,如果应用程序配置为侦听小于1024的任何端口,则服务器可能会阻止它并且节点会抛出错误.你可以在终端显示"Error:listen EACCES"时发现这个.

为了解决这个问题,我按照这里的教程进行操作,并以root身份运行以下命令:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Run Code Online (Sandbox Code Playgroud)

然后我修改了app.listen以收听端口8080

app.listen(8080, function(){
console.log('listening.........................................');
});
Run Code Online (Sandbox Code Playgroud)

感谢tony和E_net4让我走向正确的方向