res.locals返回undefined

Cos*_*sta 4 templating node.js express

我正在尝试设置一些特定响应的变量,当我从我的中间件中记录它时,我正在undefined考虑res.locals,但是如果我从路由函数中记录它,它会返回该函数.

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(function (res, req, next) {
  console.log("res.locals from app.use middleware: ", res.locals);
  // res.locals.boom = 'nice';
  // res.locals.zoom = 'yeah!';
  next();
});
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Chr*_*ris 8

您的请求和响应对象向后.显然,如果您知道代码中的差异,命名无关紧要,但最好保持正确命名.

app.use( function (request, response, next) {
    // stuff
});
Run Code Online (Sandbox Code Playgroud)

我不记得我的头脑,但我相信你想:

request.app.locals;
Run Code Online (Sandbox Code Playgroud)

用我上面的例子.再次,不是100%肯定.您始终可以控制出要检查的请求对象.