【问题标题】:Redirect after posting in nodejs Error 'Can't set headers after they are sent'在 nodejs 中发布后重定向错误“发送后无法设置标头”
【发布时间】:2015-02-12 14:05:37
【问题描述】:

在 nodejs 中发布后重定向错误“发送后无法设置标头” 这是代码

router.post('/newItem', function (req, res, next) {

  product.insertItem(req.body, req.files, function (err ,result) {
    if (err) throw err;

    res.redirect(307, '/home'); 
  });
});

这是模块insertItem函数

module.exports.insertItem = function (doc, file, callback) {

  mongo.item.insert(data, function (err, result) {
    if (err) throw err;
    callback(err, result);
  });
})

这总是在下面抛出错误

/Users/hello/Desktop/dev/project/node_modules/mongodb/lib/utils.js:95 
    process.nextTick(function() { throw err; }); 

Error: Can't set headers after they are sent. 
    at ServerResponse.OutgoingMessage.setHeader (http.js:690:11) 
    at ServerResponse.header (/Users/hello/Desktop/dev/project/node_modules/express/lib/response.js:564:10)
    at ServerResponse.res.location (/Users/hello/Desktop/dev/project/node_modules/express/lib/response.js:678:8)
    at ServerResponse.redirect 

我该如何解决这个问题..?

【问题讨论】:

  • 我觉得很简单。我对nodejs有什么误解吗?还是快递??

标签: node.js redirect express callback


【解决方案1】:

当我在有问题的块之后有更多代码时,我遇到了与 res.redirect 类似的问题。

我在重定向后用return false 解决了这个问题。

在你的情况下,它看起来像这样:

res.redirect(307, '/home'); return false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-03-03
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多