【问题标题】:Getting header resend error in node在节点中获取标头重新发送错误
【发布时间】:2015-01-11 13:04:56
【问题描述】:

我有以下路由:

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)

我已经在我的项目中做过几次这样的事情,但这次它抛出了这个错误,我现在知道为什么了吗?知道为什么吗?

【问题讨论】:

  • 添加了任何中间件?
  • 不,没有任何改变可以产生这个
  • 您的回调调用了两次。所以第二个抛出标题错误
  • 哦,是的,多么糟糕的错误,我没看到。谢谢
  • 现在一切正常 :p 谢谢!

标签: javascript node.js mongoose pug url-routing


【解决方案1】:

您的回调调用了两次。所以第二个抛出头部错误

制作类似的东西

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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多