「Express:它們發送後無法設置標頭」我是Express和Node的新手,並且在使用高級REST客戶端測試應用程序中受保護的REST端點時,數據從端點返回到客戶如預期,但控制檯日誌快速應用程序與節點
"Error: Can't set headers after they are sent"
它停止服務器。這裏SO搜索,這似乎發送多個響應時發生,但我不明白,在我的代碼:
router.get('/books', userAuthenticated, function (req, res, next) {
Book.find({}, function(err, docs){
if(err) {
res.send(err)
} else {
res.send(docs);
// next();
// return;
}
})
});
這個錯誤是從客戶端發送一個請求/響應時/或預計上午我錯過了處理服務器上的錯誤的東西?
最佳猜測是userAuthenticated中間件發送響應。檢查該函數,確保res在調用next()之前不會被髮送() – Brian
這裏是我已經重構的userAuthenticated中間件,儘管我儘可以簡單,但仍然是相同的錯誤:function userAuthenticated(req,res,next){if isAuthenticated())return next(); } res.redirect('/ notloggedin'); } – user2232681
檢查您的瀏覽器或郵遞員的回覆。打開開發控制檯,進入網絡,然後檢查請求/書籍 – Brian