请注意,我已经设置了一个域来捕获和处理应用程序中的异常,并避免应用程序崩溃。它可以工作,但我想如果我正在做写的事情,因为我也有这个代码
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
对于错误处理,我通常会收到一个错误,声明“在设置后无法设置标头”,这让我相信错误处理中间件已经在处理这个问题了。我需要一点指导,以提高在领域的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')});
}
});
});如果回调返回错误,则呈现errorpage是好主意,还是应该返回err,然后将错误转发给错误处理程序?我对处理这件事的理想方式感到有点困惑。任何期望的建议都将不胜感激。
发布于 2016-01-25 11:45:40
我想我找到了解决问题的办法
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')});
}
});
我将错误转发给errorhandler中间件,并用它为每个404和500错误定义两个错误。这对我来说很有效。
https://stackoverflow.com/questions/34951933
复制相似问题