2015-12-15 61 views
0

我不知道爲什麼express-messages不起作用。我在app.js中指定它,在路由器/控制器和視圖中指定它。節點Express Flash消息不工作

這是我app.js的一部分:

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var exphbs = require('express-handlebars'); 
var expressValidator = require('express-validator'); 
var flash = require('connect-flash'); 
var session = require('express-session'); 
app.use(flash()); 
app.use(require('connect-flash')()); 

app.use(function (req, res, next) { 
    res.locals.messages = require('express-messages')(req, res); 

    if(req.url == '/'){ 
    res.locals.isHome = true; 
    } 
    next(); 
}); 

這是我的路,我指定flash消息:

router.post('/login', passport.authenticate('local', {failureRedirect: '/', failureFlash: 'Invalid username or password'}), function(req, res){ 
    console.log(req.body); 
    console.log('Authentication Successful'); 
    req.flash('success', 'You are logged in'); 
    var usertype = req.user.type; 
    res.redirect('/'+ usertype + 's/classes'); 
}); 

router.get('/logout', function(req, res){ 
    req.logout(); 
    req.flash('success', "You have logged out"); 
    res.redirect('/'); 
}) 

這是我的車把觀點,我有消息的標籤:

<div class="col_12"> 
    <div class="col_9"> 
     {{{messages}}} 
     {{#if errors}} 
      {{#each errors}} 
       <div class="notice error"> 
        <i class="icon-remove-sign icon-large"></i> 
        {{msg}} 
        <a href="#close" class="icon-remove"></a> 
       </div> 
      {{/each}} 
     {{/if}} 
    {{{body}}} 

回答

2

連接閃存保存消息到會話。您需要使用快速會話添加中間件閃存之前 app.use(session());