2016-06-10 105 views
0

当我添加的所有三个文件(dishRouter.js,promoRouter.js和app.js leaderRouter.js)显示了我下面的错误未处理的“错误”事件?

error image

这是我app.js

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var dishRouter = require('./routes/dishRouter'); 
var promoRouter = require('./routes/promoRouter'); 
var leaderRouter = require('./routes/leaderRouter'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 
app.use('/dishes',dishRouter); 
app.use('/promotions',promoRouter); 
app.use('/leadership',leaderRouter); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 
// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 

module.exports = app; 

这是dishRouter.js

var express = require('express'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 

var hostname = 'localhost'; 
var port = 3000; 

var app = express(); 

app.use(morgan('dev')); 

var dishRouter = express.Router(); 

dishRouter.use(bodyParser.json()); 

dishRouter.route('/') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send all the dishes to you!'); 
}) 

.post(function(req, res, next){ 
    res.end('Will add the dish: ' + req.body.name + ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting all dishes'); 
}); 

dishRouter.route('/:dishId') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send details of the dish: ' + req.params.dishId +' to you!'); 
}) 

.put(function(req, res, next){ 
     res.write('Updating the dish: ' + req.params.dishId + '\n'); 
    res.end('Will update the dish: ' + req.body.name + 
     ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting dish: ' + req.params.dishId); 
}); 

app.use('/dishes',dishRouter); 

app.use(express.static(__dirname + '/public')); 

app.listen(port, hostname, function(){ 
    console.log(`Server running at http://${hostname}:${port}/`); 
}); 

module.exports = dishRouter; 

这是leaderRouter.js

var express = require('express'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 

var hostname = 'localhost'; 
var port = 3000; 

var app = express(); 

app.use(morgan('dev')); 

var leaderRouter = express.Router(); 

leaderRouter.use(bodyParser.json()); 

leaderRouter.route('/') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send all the leaders to you!'); 
}) 

.post(function(req, res, next){ 
    res.end('Will add the leader: ' + req.body.name + ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting all leaders'); 
}); 

leaderRouter.route('/:leaderId') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send details of the leader: ' + req.params.leaderId +' to you!'); 
}) 

.put(function(req, res, next){ 
     res.write('Updating the leader: ' + req.params.leaderId + '\n'); 
    res.end('Will update the leader: ' + req.body.name + 
     ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting leader: ' + req.params.leaderId); 
}); 

app.use('/leaders',leaderRouter); 

app.use(express.static(__dirname + '/public')); 

app.listen(port, hostname, function(){ 
    console.log(`Server running at http://${hostname}:${port}/`); 
}); 

module.exports = leaderRouter; 

,这是promoRouter.js

var express = require('express'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 

var hostname = 'localhost'; 
var port = 3000; 

var app = express(); 

app.use(morgan('dev')); 

var promoRouter = express.Router(); 

promoRouter.use(bodyParser.json()); 

promoRouter.route('/') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send all the promotions to you!'); 
}) 

.post(function(req, res, next){ 
    res.end('Will add the promotion: ' + req.body.name + ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting all promotions'); 
}); 

promoRouter.route('/:promotionId') 
.all(function(req,res,next) { 
     res.writeHead(200, { 'Content-Type': 'text/plain' }); 
     next(); 
}) 

.get(function(req,res,next){ 
     res.end('Will send details of the promotion: ' + req.params.promotionId +' to you!'); 
}) 

.put(function(req, res, next){ 
    res.write('Updating the promotion: ' + req.params.promotionId + '\n'); 
    res.end('Will update the promotion: ' + req.body.name + 
     ' with details: ' + req.body.description); 
}) 

.delete(function(req, res, next){ 
     res.end('Deleting promotion: ' + req.params.promotionId); 
}); 

app.use('/promotions',promoRouter); 

app.use(express.static(__dirname + '/public')); 

app.listen(port, hostname, function(){ 
    console.log(`Server running at http://${hostname}:${port}/`); 
}); 

module.exports = promoRouter; 

但要加只有一个路由器,完美的作品,为什么呢?

我用的Win7,节点v4.4.5,NPM v3.9.0

回答

0

在你打电话app.listen每个路由器。这是启动快速服务器在该端口上侦听的内容。它适用于第一台路由器,但第二台路由器会发出错误信息告诉你该端口正在使用中。 只有一个应用程序可以侦听特定的端口。正确的做法是从个别路由器中删除任何共同的东西,并将它们放入您的app.js

+0

是的,就是这样,现在的作品!非常感谢! – Aleksandar

0

右删除app.listen()使服务器成功运行。但是,路由脚本的请求由服务器通过代码404消息来响应。

试图联系以下路由代码如下

https://gist.github.com/MCheli/c4efc94f0d754f3e497e13b1bbf04b0d

和服务器代码如下

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var dishRouter = require('./routes/dishRouter'); 
var promoRouter = require('./routes/promoRouter'); 
var leaderRouter = require('./routes/leaderRouter'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 
app.use('/dishes',dishRouter); 
app.use('/promotions',promoRouter); 
app.use('/leadership',leaderRouter); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
var err = new Error('Not Found'); 
err.status = 404; 
next(err); 
}); 

// error handlers 
// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: err 
}); 
}); 
} 

// production error handler 
// no stacktraces leaked to userfor the server.js file 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 

module.exports = app; 
相关问题