0
請設置一個域來捕獲和處理我的應用程序中的異常,並避免應用程序崩潰。它的作品,但我想,如果我正在做寫事情,因爲我也有這個代碼在Node.js中進行生產中的錯誤處理和轉發
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')});
}
});
}); ,如果回調返回和錯誤,或者它應該返回err,然後轉發錯誤到錯誤處理程序?是否渲染errorpage是一個好主意?我對處理這個問題的理想方式有點困惑。任何期望的建議是非常讚賞
不是問題的答案,而是*「已發送的頭文件」*錯誤應該一般是固定的,而不是處理的,因爲它是一個邏輯缺陷,你試圖在內容輸出後設置頭文件。 – adeneo