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

Javascript 使用Express将statusCode传递给错误中间件,javascript,node.js,express,Javascript,Node.js,Express,发生错误时,Express中具有4个参数的中间件将被触发。基于此,我想保留一个超级简单的结构来根据状态码触发错误 在我的middleware.js文件中,我执行以下操作: models.pool.query( "SELECT * FROM user,function(err, query) { if(err) { err.statusCode = 500; return next(err) } 我已经将错误中间件放在了初始脚本文件app.js的末尾。中间件已

发生错误时,Express中具有4个参数的中间件将被触发。基于此,我想保留一个超级简单的结构来根据状态码触发错误

在我的
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);
});

你知道发生了什么事吗?谢谢

您在哪里定义
middleware.js
?它看起来怎么样?在一个叫做“中间件”的独立目录中。我用
var middleware=require('./middleware')
app.js
中调用它。它们在函数级别被调用:
app.post('/api/auth',middleware.authenticate,function(…
中间件执行得很好,错误中间件总是在必须执行的时候启动。添加有问题的中间件。您在哪里定义
middleware.js
?它看起来如何?在一个名为“middleware”的单独目录中。我在
app.js
中使用
var middleware=require('./middleware')调用它
。在函数级调用它们:
app.post('/api/auth',middleware.authenticate,function(…)
中间件执行良好,错误中间件总是在必须执行时启动。添加有问题的中间件。