ExpressJS 3.0 How to pass res.locals to a jade view?

前端 未结 2 963
温柔的废话
温柔的废话 2020-12-04 16:05

I want to display a flash message after a user fails to sign in but I just can\'t get the variables to show up in my Jade views.

I have some pieces, I know I have t

2条回答
  •  情话喂你
    2020-12-04 16:58

    If you are using express.session() you must call your function AFTER express.session() but BEFORE app.router, inside of app.configure().

    app.js

    app = express();
    
    app.configure(function(){
      app.set('port', process.env.PORT || 3000);
      app.set('views', __dirname + '/views');
      app.set('view engine', 'jade');
      app.use(express.logger('dev'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(express.session());
    
      // Give Views/Layouts direct access to session data.
      app.use(function(req, res, next){
        res.locals.session = req.session;
        next();
      });
    
      app.use(app.router);
      app.use(express.static(path.join(__dirname, 'public')));
    });
    

    index.jade

    extends layout
    
    block content   
      h1= title   
      p My req.session.var_name is set to #{session.var_name}
    

提交回复
热议问题