我在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)
显然,如果应用程序配置为侦听小于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让我走向正确的方向
| 归档时间: |
|
| 查看次数: |
1098 次 |
| 最近记录: |