0

我想使用从Express 3.0req.flash中删除的那个。根据文档,只需将应用程序配置为使用它:

 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不是每个请求都可用,因为文档状态。

4

1 回答 1

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()中间件之前声明的,因此尚未修改请求对象。

于 2013-04-28T02:29:47.767 回答