gpt4 book ai didi

node.js - Express 中的中间件

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:23 25 4
gpt4 key购买 nike

如何捕获在 router(/test) 方法中的中间件函数中抛出的错误

    app.use(function(err, req, res, next) {    
throw new Error('test');
next("its failing")
})

app.get('/test',function(req,res,error){

res.send({ message: error.message });
})

最佳答案

您可以使用 res.locals 将变量从中间件传递到路由处理程序目的。如果传递错误对象,您可以在路由处理程序中检查这一点。

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 将跳过任何剩余的处理程序。请参阅Express error handling

例如:

app.use(function(req, res, next) {
try {
throw new Error('test error');
} catch (err) {
next(err);
}
})

关于node.js - Express 中的中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58407052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com