2017-06-22 5 views
1

Le code s'exécute sans aucune erreur sur mon terminal serveur mais je n'arrive pas à obtenir le flash sur la page Web. Ceci est mon code complet:Les messages flash Node.js ne s'affichent pas sur la page

passport.js:

if(user) { 
    return done(null, false, req.flash('emailmessage', 'That email is already taken')); 
} else { 
    var userPassword = generateHash(password); 
    var data = { 
     email:email, 
     password:userPassword 
    }; 
} 

auth.js:

app.get('/signup', authController.signup,function (req, res, next) { 
    res.render('signup',{message: req.flash('emailmessage')}) 
}); 

app.post('/signup', passport.authenticate('local-signup', { 
    successRedirect: '/dashboard', 
    failureRedirect: '/signup', 
    failureFlash : true 
})); 

mysignup.hbs:

{{emailmessage}} 
<div id="frmCheckUsername"> 
    <form id="signup" name="signup" method="post" action="/signup"> 
    <p><label for="email">Email Address</label> 
    <input class="text" name="email" type="email" id="email" required class="demoInputBox" onBlur="checkAvailability()"/><span id="user-availability-status"></span></p> 
    <p><label for="password">Password</label> 
    <input name="password" type="password" required/></p> 
    <input class="btn" name="signbtn" type="submit" id="signbtn" value="Sign Up" /> 
    </form> 
    <span id="signspano" ></span> 
</div> 
+0

L'utilisation des messages flash nécessite une fonction req.flash(). Vous pouvez utiliser le middleware [flash] (https://github.com/expressjs/flash). –

+0

@YiKai j'ai déjà var flash = require ('connect-flash'); –

+0

Et middleware de session aussi? Flash middleware nécessite middleware de session pour fonctionner. –

Répondre

1

Votre code utilise message comme variable:

res.render('signup',{message: req.flash('emailmessage')}) 

Mais votre modèle utilise emailmessage:

{{emailmessage}}