发生错误时会触发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);
});
有关正在发生的事情的任何想法?谢谢!