node.js - 在 nodejs 中发布后重定向错误 'Can' t set headers after they are sent'

标签 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 

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

最佳答案

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

我用 return false 解决了它重定向后。

在您的情况下,它看起来像这样:
res.redirect(307, '/home'); return false;

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

相关文章:

node.js - 获取 req.param 未定义

javascript - 在模块内实例化类时超出最大调用堆栈

Node.js Express 服务 index.html 而不是静态文件

mysql - NodeJ和MariaDB,存储用户和密码

javascript - 如何使用 Mongoose 羽毛适配器编写聚合?

node.js - 如何在 Connect 中间件中使用异步初始化?

php - 使用 htaccess 重写/重定向,因此单个 PHP 文件可以根据 GET/POST 变量显示数据

android - open.spotify 如何检测手机浏览器

javascript - 选择选项后重定向

javascript - 将图片上传到未定义的Node.js图片