node.js - 在nodejs中发布后重定向错误 'Can' t在发送后设置 header '

标签 node.js redirect express callback

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

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 

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

最佳答案

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

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

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

res.redirect(307, '/home'); 返回假;

关于node.js - 在nodejs中发布后重定向错误 'Can' t在发送后设置 header ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479496/

相关文章:

javascript - 使用 node.js 函数在 cloudant 中创建搜索查询

javascript - 如何使用node.js从cloudinary下载图像

node.js - 在 gradle-node-plugin 中配置 nodeModulesDir

node.js - nodejs tls session ID

c# - 如何使用 MVC3 中的 SAML 断言发布到另一个网站?

javascript - jQuery 重定向到 div 类名称页面 (IframeTracker.js)

php 重定向 - HTML header

mysql - 如何使用 MySQL 和 NodeJS 获取一行?

node.js - Multer 文件上传不适用于 swaggerExpress

javascript - 带有 Contentful 和 Node 的 Webhook