请考虑简单的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行,然后在遇到另一个渲染时失败:
错误:发送后无法设置标头。
这就像响应需要结束或其他什么,但我已经尝试过,但无济于事。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
只需使用else
,这样只有一个代码路径会导致res。 res.send
已经结束了回复,但您尝试使用其他res.render
简单地将第二个if更改为else if
,然后移动代码以允许此操作,即将console.log移动到所有条件之上。
或者,我相信您可以在return
之后添加res.render
声明。
答案 1 :(得分:0)
我只使用return res.render()
。
当你说它不起作用时很奇怪,因为返回确实应该阻止函数的其余部分执行。