未处理的“错误”事件?(Unhandled 'error' event?)

编程入门 行业动态 更新时间:2024-10-26 05:34:44
未处理的“错误”事件?(Unhandled 'error' event?)

当我添加所有三个文件(dishRouter.js,promoRouter.js和app.js中的leaderRouter.js)时显示以下错误

错误图片

这是我的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

when I add all three files (dishRouter.js, promoRouter.js and leaderRouter.js in app.js) shows me the following error

error image

This is my 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;

This is 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;

this is 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;

and this is 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;

but to add only one router, works perfectly, why?

I use Win7, node v4.4.5, npm v3.9.0

最满意答案

在每个路由器中,您正在调用app.listen 。 这是启动快速服务器侦听该端口的原因。 它适用于第一个路由器,但在第二个路由器上会发出一个错误,告诉您该端口正在使用中。 只有一个应用程序可以侦听特定端口。 执行此操作的正确方法是从各个路由器中删除任何常见内容并将其放入app.js

In each router you're calling app.listen. This is what starts the express server listening on that port. It will work for the first router, but on the second it will throw an error telling you that the port is in use. Only one application can listen on a specific port. The correct way to do this is to remove anything common from the individual routers and put them in your app.js

更多推荐

本文发布于:2023-07-31 10:34:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1341920.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   事件   未处理   event   error

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!