Javascript 使用Express将statusCode传递给错误中间件
发生错误时,Express中具有4个参数的中间件将被触发。基于此,我想保留一个超级简单的结构来根据状态码触发错误 在我的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的末尾。中间件已
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(…)
中间件执行良好,错误中间件总是在必须执行时启动。添加有问题的中间件。