다음과 같은 라우팅이 있습니다.
router.get('/blog/:title', function (req, res) {
blog.getBlogPost(req, function (data) {
res.render('blog', data);
});
});
및 기능 getBlogPost
exports.getBlogPost = function (req, callback) {
// TODO SAFE PARAM
// TODO ERR Handling
var title = req.param('title');
Blog.findOne({permaLink: title}).exec(function (err, data) {
var date = new Date(+data.timestamp);
data.tags = createHashtagsFromCSV(data.tags);
data.date = month_names_long[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
callback(data);
});
// not found
callback({});
};
이상하게도 다음 노드 콘솔 로그가 표시됩니다.
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
at ServerResponse.header (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\response.js:662:10)
at ServerResponse.send (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\response.js:146:12)
at fn (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\response.js:896:10)
at View.exports.renderFile [as engine] (C:\Users\Michael\Desktop\qcode\node_modules\jade\lib\jade.js:325:12)
at View.render (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\view.js:76:8)
at Function.app.render (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\application.js:527:10)
at ServerResponse.res.render (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\response.js:900:7)
at module.exports (C:\Users\Michael\Desktop\qcode\app.js:65:9)
at Layer.handle_error (C:\Users\Michael\Desktop\qcode\node_modules\express\lib\router\layer.js:58:5)
내 프로젝트에서 이미 이와 같은 작업을 몇 번 수행했지만 이번에는이 오류가 발생하고 이제 그 이유를 알 수 있습니까? 왜 그런지 아세요?
콜백이 두 번 호출됩니다. 그래서 두 번째는 헤더 오류를 던집니다.
다음과 같이 만드십시오.
Blog.findOne({permaLink: title}).exec(function (err, data) {
if (!data) {
callback({});
return;
}
var date = new Date(+data.timestamp);
data.tags = createHashtagsFromCSV(data.tags);
data.date = month_names_long[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
callback(data);
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다