我試圖在我的代碼中查找錯誤,而其他主題沒有任何結果。發送後無法設置標題
有app.js代碼,其包含來自快車模塊get
方法:
app.get('/notes', notesController.all);
有notesController.js代碼,其中出口到app.js create
方法:
exports.all = function (req, res) {
Notes.all(function(err, docs){
if(err){
console.log(err);
return res.sendStatus(500);
}
res.send(docs);
})
};
在model
此編碼:
應用程序崩潰與這個錯誤:
process.nextTick(function() { throw err; }); ^
Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11) at ServerResponse.header (O:\OGPI6\node_modules\express\lib\response.js:725:10) at ServerResponse.json (O:\OGPI6\node_modules\express\lib\response.js:253:10) at ServerResponse.send (O:\OGPI6\node_modules\express\lib\response.js:158:21) at O:\OGPI6\controllers\notes.js:9:13 at O:\OGPI6\models\notes.js:6:9 at handleCallback (O:\OGPI6\node_modules\mongodb\lib\utils.js:120:56) at O:\OGPI6\node_modules\mongodb\lib\cursor.js:860:16 at handleCallback (O:\OGPI6\node_modules\mongodb-core\lib\cursor.js:171:5) at setCursorDeadAndNotified (O:\OGPI6\node_modules\mongodb-core\lib\cursor.js:505:3)
在我的腦海裏唯一的錯誤,在回調函數「控制器」:
if(err){
console.log(err);
return res.sendStatus(500);
}
res.send(docs);
但我認爲,當發生錯誤,必須終止函數並返回sendStatus(500)
,但登錄後它嘗試返回的控制檯中的錯誤res.send(docs)
,然後應用程序崩潰,因爲它正在發送第二個標頭。它看起來很好,但沒有工作。任何人都可以指出我失敗的方式嗎?
您是否認爲''exports.all'方法可能會多次觸發回調。你有沒有試圖在回調開始時放置一個'console.log'? –
我同意@BenjiLees,它看起來像回調被召喚兩次。 – robertklep