Node.js Express中的中间件
如何在路由器(/test)方法中捕获中间件函数中抛出的错误Node.js Express中的中间件,node.js,Node.js,如何在路由器(/test)方法中捕获中间件函数中抛出的错误 app.use(函数(err,req,res,next){ 抛出新错误(“测试”); 下一步(“它的失败”) }) app.get('/test',函数(req,res,error){ res.send({message:error.message}); }) 您可以使用对象将变量从中间件传递到路由处理程序。如果传递错误对象,可以在路由处理程序中检查此错误 app.use(function(req, res, next) { t
app.use(函数(err,req,res,next){
抛出新错误(“测试”);
下一步(“它的失败”)
})
app.get('/test',函数(req,res,error){
res.send({message:error.message});
})
您可以使用对象将变量从中间件传递到路由处理程序。如果传递错误对象,可以在路由处理程序中检查此错误
app.use(function(req, res, next) {
try {
throw new Error('test error');
} catch (err) {
res.locals.Error = err;
}
next();
})
app.get('/test', function(req,res,error){
if (res.locals.Error) {
res.status(500).json({ message: res.locals.Error.message})
} else {
res.send("OK");
}
})
注意:还可以将错误直接传递给next()函数。但是,如果您这样做,Express将跳过任何剩余的处理程序。看
例如:
app.use(function(req, res, next) {
try {
throw new Error('test error');
} catch (err) {
next(err);
}
})
下面的代码段按预期工作
var a=function test(req,res,next){
try {
throw new Error('test error');
} catch (err) {
next(err);
}
}
app.get('/test',a, function(req,res){
res.send(200)
}, (err, req, res, next) => {
res.status(400).send({ error: err.message });
})