Passport throwing "undefined is not a function"
javascript, mongoose, node.js, passport-local, passport.js
Solution
Change
var LocalStrategy = require('passport-local').LocalStrategy;
to
var LocalStrategy = require('passport-local').Strategy;
The `passport-local` module exports `Strategy`:
var Strategy = require('./strategy');
exports.Strategy = Strategy;
Problem
This is my first time using passport. I keep getting this error when I try to launch my app: ``` passport.use(new LocalStrategy(Account.authenticate())); ^ TypeError: undefined is not a function at Object.<anonymous> (/Users/drewwyatt/Sites/JS/Node/MWInternal/app.js:38:14) ``` Here's the (relevant) portions of app.js ``` var express = require('express'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var mongoose = require('mongoose'); var passport = require('passport'); var LocalStrategy = require('passport-local').LocalStrategy; var app = express(); var connectionString = '***************'; // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(require('less-middleware')(path.join(__dirname, 'public'))); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } // passport config var Account = require('./models/account'); passport.use(new LocalStrategy(Account.authenticate())); passport.serializeUser(Account.serializeUser()); passport.deserializeUser(Account.deserializeUser()); mongoose.connect(connectionString); var routes = require('./routes'); ... ``` /models/account.js ``` var mongoose = require('mongoose'), Schema = mongoose.Schema passportLocalMongoose = require('passport-local-mongoose'); var Account = new Schema({ email: String, password: String }); Account.plugin(passportLocalMongoose); module.exports = mongoose.model('Account', Account); ``` What am I missing?