使用Express将statusCode传递给错误中间件

时间:2016-04-15 08:37:02

标签: javascript node.js express

发生错误时会触发Express中有4个参数的中间件。基于此,我想保留一个超级简单的结构来基于statusCode触发错误。

在我的middleware.js文件中,我执行此操作:

models.pool.query(
      "SELECT * FROM user,function(err, query) {
            if(err) { err.statusCode = 500; return next(err) }

我已将错误中间件放在我的初始脚本文件app.js的末尾。中间件已启动,但err.statusCode完全为空,因此它不起作用:

app.use(function(err, req, res, next) {
    statusCode = err.statusCode || 500;  //--> err.statusCode is empty!!
    if(env != 'test') log.error(err);
    if(statusCode == 500) err.message = 'Internal server error';
    if(statusCode == 404) err.message = 'Not found';
    res.status(err.statusCode).send(err);
});

有关正在发生的事情的任何想法?谢谢!

0 个答案:

没有答案