Javascript 使用特定http状态退出express中间件
希望这是一个简单的,但我有一些自定义中间件,我想返回404或401等给用户,并停止传播其他处理程序等 我希望我能做一些类似的事情:Javascript 使用特定http状态退出express中间件,javascript,node.js,express,http-status-codes,middleware,Javascript,Node.js,Express,Http Status Codes,Middleware,希望这是一个简单的,但我有一些自定义中间件,我想返回404或401等给用户,并停止传播其他处理程序等 我希望我能做一些类似的事情: function SomeMiddleware(req, res, next) { if(user.notRealOrSomething) { throw new HttpException(401, "Tough luck buddy"); } return next(); } 但是,找不到有关如何最好地执行此操作的任何特定信息。您应该将错误
function SomeMiddleware(req, res, next) {
if(user.notRealOrSomething)
{ throw new HttpException(401, "Tough luck buddy"); }
return next();
}
但是,找不到有关如何最好地执行此操作的任何特定信息。您应该将错误传递给
next()
函数
function SomeMiddleware(req, res, next) {
if(user.notRealOrSomething) {
return next(throw new HttpException(401, "Tough luck buddy"));
}
next();
}
传递给next
的任何参数都将被视为错误,除非'route'
会跳到下一个路由
当调用next时出现错误,将执行错误中间件
function (err, req, res, next) {
// err === your HttpException
}
Express.js将任何具有4个参数的中间件视为错误中间件
错误处理中间件的定义与常规中间件一样,但是必须使用4的算术数来定义,即签名(err、req、res、next):
所有这些都在以下位置得到了很好的记录:没有任何东西可以阻止您使用响应对象:
res.send(401, "Tough luck buddy");
next('invalid user');
这在express 4中对我不起作用,它仍然返回500状态,并且似乎忽略了res数据这在更改res.status(401).send()后对我起作用;返回下一个(“无效用户”);