NodeJs req.flash方法在某些请求中不可用

时间:2013-04-28 01:35:49

标签: node.js express

我想使用removed as of Express 3.0 req.flash。根据{{​​3}},只需将应用程序配置为使用它:

 app.configure(function() {
  app.use(express.cookieParser('keyboard cat'));
  app.use(express.session({ cookie: { maxAge: 60000 }}));
  app.use(flash());
});

但是,我已将我的应用配置为:

app.configure('production', function() {
    app.use(express.static('/static', express.static(__dirname + '/lib/static')));
      app.use(express.errorHandler());
  app.use(express.cookieParser('keyboard cat'));
  app.use(express.session({ cookie: { maxAge: 60000 }}));
  app.use(flash());
  app.use(passport.initialize());
  app.use(passport.session());
 app.use(app.router);
});

我一直在尝试检测闪存的可用性:

app.all('/*', function(req, res, next) {
   console.log('FLASH: ', req.flash);
    ....

我的日志显示以下内容:

FLASH:  undefined
FLASH:  undefined
FLASH:  function _flash(type, msg) {....

仅显示一条“/”路线请求。我理解为什么可能会有多个GET请求发送到'/'的请求,但是,我想知道为什么req.flash在每个请求都不可用,因为文档状态。

1 个答案:

答案 0 :(得分:2)

我认为您应该将配置更改为:

app.configure('production', function() {
  app.use(express.errorHandler());
  app.use(express.cookieParser('keyboard cat'));
  app.use(express.session({ cookie: { maxAge: 60000 }}));
  app.use(flash());
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(express.static('/static', express.static(__dirname + '/lib/static')));
  app.use(app.router);
});

我总是将静态路由保留在中间件的末尾。

我认为问题是您的/*路由也在为/static请求触发,并且由于该中间件是在flash()中间件之前声明的,因此请求对象尚未被修改。