gpt4 book ai didi

javascript - 用于生产的Node.js中的错误处理和转发

转载 作者:行者123 更新时间:2023-12-03 08:53:21 25 4
gpt4 key购买 nike

请,我已经设置了一个域来捕获和处理应用程序中的异常,并避免应用程序崩溃。它可以工作,但是我要写东西,因为我也有这段代码

app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});

});

对于错误处理,通常,我会收到一条错误消息,指出“设置后无法设置 header ”,这使我相信错误处理程序中间件已经在解决该问题。我需要一些指导来增强对node.js中错误处理有效方式的理解
域代码
app.use(function(req, res, next){
var reqDomain = domain.create();
reqDomain.add(req);
reqDomain.add(res);
reqDomain.on('error', function(err){
console.log(err);
res.statusCode = 500;
res.render('errorpage');
});
reqDomain.run(next);

});

以该代码段为例,假设存在错误,如何处理错误。
router.get('/usermanage',checkloggedIn.isAdminOrProfessor,function(req,res){
User.find({}, function(error,data){
if(error){
console.log(error)
res.render('errorpage');
} else{
console.log(data)
res.render('ManageUsers',{mydata:data,SuccessMessage: req.flash('SuccessMessage'), ErrorMessage: req.flash('ValidationError')});

}
});

});
如果回调返回和错误,还是应该返回err,然后将错误转发给错误处理程序,则呈现错误页是个好主意吗?我对处理此问题的理想方法有些困惑。任何期望的建议将不胜感激

最佳答案

我想我找到了解决问题的方法

router.get('/usermanage',checkloggedIn.isAdminOrProfessor,function(req,res,next){
User.find({}, function(error,data){
if(error){
console.log(error)
next(error)
} else{
console.log(data)
res.render('ManageUsers',{mydata:data,SuccessMessage: req.flash('SuccessMessage'), ErrorMessage: req.flash('ValidationError')});

}
});

我将错误转发给错误处理程序中间件,并为每个404和500错误定义了两个。对我来说很好

关于javascript - 用于生产的Node.js中的错误处理和转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951933/

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