【发布时间】:2017-08-01 20:18:10
【问题描述】:
我有一个全局 error handling middleware 的快速应用程序,如下所示:
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})
现在,我重构了应用程序,使其拥有一个专用的router,仅用于错误处理和相关视图(应用程序向用户显示很好的错误消息,隐藏内部错误):
var express = require('express');
var app = express();
// add one or more routers that throw errors
var myRouter = express.Router();
router.get('/', function(req, res, next) {
next(new Error('Internal error'));
});
// more handlers...
// ...and finally the new errors router
var errRouter = express.Router();
errRouter.use(function(err, req, res, next) {
logError(err);
renderNiceErrorView(err);
});
app.use(errRouter);
但是现在这个错误处理程序在路由器内部,它不再捕获错误。
【问题讨论】: