title: TypeError: req.flash is not a function
body: <p>When I tried to log in from page, I got error <code>return done(null, false, req.flash('loginMessage', 'User does not exist'));</code> <code>TypeError: req.flash is not a function</code>. </p>
  
  <p>Below are my server.js and passport.js configuration:</p>
  
  <p>server.js:</p>
  
  <pre><code>var express = require('express');
  var app = express();
  var bodyParser = require('body-parser');
  var methodOverride = require('method-override');
  var session = require('express-session');
  var ejs = require('ejs');
  var mongoose = require('mongoose');
  var passport = require('passport');
  var flash = require('connect-flash');
  
  
  mongoose.connect('mongodb://localhost:mydb');
  
  require('./config/passport')(passport);
  app.use(express.static('public'));
  app.set('view engine', 'ejs');
  app.set('views', __dirname+'/public/views');
  app.use(bodyParser.urlencoded({'extended':'true'}));
  app.use(bodyParser.json());
  app.use(methodOverride());
  app.use(session({secret:'learningpassport',
              resave: true,
              saveUnitialized: true}));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(flash());
  
  require('./app/routes')(app,passport);
  
  
  app.listen(3000);
  </code></pre>
  
  <p>config/passport.js: </p>
  
  <pre><code>var LocalStrategy = require('passport-local').Strategy;
  var User = require('../app/model/user');
  module.exports = function(passport){
  
  passport.serializeUser(function(user, done){
      done(null,user.id);
  });
  passport.deserializeUser(function(id, done){
      User.findById(id, function(err,user){
          done(err, user);
      });
  });
  
  passport.use('local-signup', new LocalStrategy({
      usernameField: 'username',
      passwordField: 'password',
      passReqToCallback: true
  },
      function(req,username, password, done){
          process.nextTick(function(){
              User.findOne({'local.username': username}, function(err, user){
                  if(err) return done(err);
  
                  if(user)
                      return done(null, false, req.flash('signupMessage','The username already exists' ));
                  else{
                      var newUser = new User();
                      newUser.local.username = username;
                      newUser.local.password = newUser.generateHash(password);
  
                      newUser.save(function(err){
                          if(err) throw done(err);
                          return done(null, newUser);
                      });
                  }
              });
          });
      }));
  passport.use('local-login', new LocalStrategy({
      usernameField: 'username',
      passwordField: 'password',
      passReqToCallBack: true
  },function(req,username, password, done){
      process.nextTick(function(){
       User.findOne({'local.username': username}, function(err,user){
           if(err) return done(err);
           if(!user){
               console.log(req.flash);
               return done(null, false, req.flash('loginMessage', 'User does not exist'));
           }
  
           if(!user.validPassword(password)){
               return done(null,false, req.flash('loginMessage', 'Password is not correct'));
           }
  
           return done(null, user);
       });
      });
  }));
  };
  </code></pre>
  
  <p>I would really appreciate everyone's help!!!</p>
  
  <p>loginservice.config.js</p>
  
  <pre><code>'use strict';
  
  angular.module('loginservice').factory('lgservice',function($http){
  var myservice = {
      async: function(username, password){
          var promise = $http.post('/login',{
              username: username,
              password: password
          }).then(function(response){
              return response;
          });
          return promise;
      }
  
  };
  return myservice;
  });
  </code></pre>
  
  <p>routes.js</p>
  
  <pre><code>module.exports = function(app,passport) {
  
  app.get('/', function (req, res) {
      console.log('/');
      res.render('pages/login', {
          message: req.flash('loginMessage')
      });
  });
  
  app.get('/about', function (req, res) {
      console.log('/about');
      res.render('pages/about');
  });
  
  app.get('/signup', function (req, res) {
      console.log('sign up');
      res.render('pages/signup', {
          message: req.flash('signupMessage')
      });
  });
  
  app.get('/logout', function (req, res) {
      req.logout();
      res.redirect('/');
  });
  
  app.get('/home', isLoggedIn, function (req, res) {
      res.render('pages/home', {
          user: req.user
      });
  });
  
  app.post('/signup', passport.authenticate('local-signup', {
      successRedirect: '/home',
      failureRedirect: '/signup',
      failureFlash: true
  }));
  
  app.post('/login', passport.authenticate('local-login', {
      successRedirect: '/home',
      failureRedirect: '/',
      failureFlash: true
  }));
  };
  
  
  funtion isLoggedIn(req,res,next){
  if(req.isAuthenticated()){
      return next();
  }
  res.redirect('/');
  }
  </code></pre>