随笔-16  评论-7  文章-0  trackbacks-0
   最近刚开始接触web开发,学习node.js,在写的时候经常会出现Can't set headers after they are sent这个错误。
   发现是在redirect或者render之后,node并不会跳出代码段,中断下面的执行,而是继续往下执行,当再次redirect或者render的时候,就会出现这个错误。

   要在redirect和render之前适时加上return,结束它们之后的代码执行,可以避免这个错误。
posted on 2011-08-12 01:08 dead_horse 阅读(7774) 评论(4)  编辑 收藏 引用 所属分类: node.js

评论:
# re: node "Can't set headers after they are sent" 2011-09-27 11:12 | wellee
是这样?
return res.redirect('/');

可是对我来说还是同样的错误。  回复  更多评论
  
# re: node "Can't set headers after they are sent" 2011-09-27 11:58 | dead_horse
@wellee
这个是重复发送了redirect请求,
if (error) { req.flash(error); console.log(error);
res.redirect('/posts/'+doc.id); }
res.render('posts/'+doc.id);

要不就在if(error)那用return返回掉,不执行下面的语句,要不就把后面的那句render用else括起来。否则在出现error的时候,会执行一次redirect和一次render报错  回复  更多评论
  
# re: node "Can't set headers after they are sent" 2011-09-27 13:01 | wellee
@dead_horse
else{res.render('posts/'+doc.id)}  回复  更多评论
  
# re: node "Can't set headers after they are sent" 2011-09-27 15:59 | wellee
@dead_horse
多谢你的帖子。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理