如何在Express.JS中渲染Jade模板后返回?

时间:2011-08-02 02:36:31

标签: node.js express

请考虑简单的express.js路线:

app.get("/test", function(req, res) {
   if(condition1) {
      res.render("foo", {
          title : "Test"
      });
   }

   console.log("HERE");

   if(condition2) {
      res.render("bar", {
          title : "Test2"
      });
   }
});

现在,在这个人为的例子中,有时condition1将是真的,有时则是condition2。但是,如果condition1为true,则控件将通过并打印出console.log行,然后在遇到另一个渲染时失败:

  

错误:发送后无法设置标头。

这就像响应需要结束或其他什么,但我已经尝试过,但无济于事。任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

只需使用else,这样只有一个代码路径会导致res。 res.send已经结束了回复,但您尝试使用其他res.render

发送另一个回复

简单地将第二个if更改为else if,然后移动代码以允许此操作,即将console.log移动到所有条件之上。

或者,我相信您可以在return之后添加res.render声明。

答案 1 :(得分:0)

我只使用return res.render()

当你说它不起作用时很奇怪,因为返回确实应该阻止函数的其余部分执行。