繁体   English   中英

Node.js和Express.js错误:发送标头后无法设置标头

[英]Node.js and Express.js Error : Can't set headers after they are sent

我是Node Land的新手,在下面的案例中,我首先要设置一个cookie,然后重定向到其他URL。 但是我收到错误消息- Unhandled rejection Error: Can't set headers after they are sent

user_details = [req.body.user_name, req.body.user_email, req.body.user_contact, req.body.route_id];
var user_details_str = JSON.stringify(user_details);
res.cookie('user_details', user_details_str, {maxAge : 7 * 24 * 3600000, httpOnly:false});
res.redirect('/route1');

我经历了此Node.js错误:发送标头后无法设置标头,并且了解到res.redirect()试图重写标头,但不知道如何解决此问题。

编辑:完整代码。

router.post('/register', encryptor.encryptUserPassword, function(req, res, next) {
  req.body.confirmed = false;

  Models.users.create(req.body).then(function(user) {


    user_details = [req.body.user_name, req.body.user_email, req.body.user_contact, req.body.route_id];
    var user_details_str = JSON.stringify(user_details);
    res.cookie('user_details', user_details_str, {maxAge : 7 * 24 * 3600000, httpOnly:false});

    user.user_pass = '';
    sess = res.session;
//    sess.email = user.user_email;
    Models.user_ride.create({user_id:user.user_id,route_id:req.body.route_id}).then(function(userroute){
        res.send(user);
    });

    res.redirect('/route1');
  }).error(function(err) {
    res.send(err);
  }).catch(Sequelize.ValidationError, function(err) {
    res.send(err);
  });
});

问题是这部分:

Models.user_ride.create({user_id:user.user_id,route_id:req.body.route_id}).then(function(userroute){
    res.send(user);
});

res.redirect('/route1');

您既要使用res.send()发送响应 res.redirect()使用res.redirect()执行重定向。 您需要选择一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM