我可以直接在模板中使用app.locals,但不能使用res.locals

时间:2016-02-21 19:59:25

标签: node.js express

在我的Express应用程序中,我可以设置app.locals并直接在我的模板中使用它们(使用express-handlebars呈现)。但是,当我在中间件中设置res.locals时,除非我将它们传入,否则它们不可用。我做错了吗?

服务器

app.locals.foo = "foo";
app.use(function(req, res, next) {
  res.locals.bar = "bar";
  next();
});

模板

{{foo}} {{bar}}

测试1

app.get("/", function(req, res) {
  app.render("template.html", {}, function(error, html) {
    res.send(html);
  });
});

结果

foo

测试2

app.get("/", function(req, res) {
  app.render("template.html", {bar: res.locals.bar}, function(error, html) {
    res.send(html);
  });
});

结果

foo bar

2 个答案:

答案 0 :(得分:8)

res.locals中提供了

res.render。我怀疑你错误地打电话给app.render,应该打电话给res.render

答案 1 :(得分:0)

只要应用程序启动,app.locals就可以在整个应用程序中使用。 res.locals仅在请求期间存在。