与passportjs错误:未知的身份validation策略“本地”

我正在开发一个nodejs应用程序并使用passportjs进行身份validation。 我正在使用护照的本地策略。 但是当我尝试login时,出现以下错误:

Error: Unknown authentication strategy "local" at attempt (/home/project/node_modules/passport/lib/middleware/authenticate.js:166:37) at authenticate (/home/project/node_modules/passport/lib/middleware/authenticate.js:338:7) at exports.authenticate (/home/project/controllers/RegistrationsController.js:87:4) at callbacks (/home/project/node_modules/express/lib/router/index.js:164:37) at param (/home/project/node_modules/express/lib/router/index.js:138:11) at pass (/home/project/node_modules/express/lib/router/index.js:145:5) at Router._dispatch (/home/project/node_modules/express/lib/router/index.js:173:5) at Object.router (/home/project/node_modules/express/lib/router/index.js:33:10) at next (/home/project/node_modules/express/node_modules/connect/lib/proto.js:193:15) at /home/project/node_modules/express-flash/lib/express-flash.js:31:7 

这是我的passport-config.js文件:

 var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = require('../models/user'); 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({usernameField: 'emailAddress'}, new LocalStrategy(function(username, password, done) { User.findOne({ emailAddress: username }, function(err, user) { if(err){ return done(err); } if (!user) { return done(null, false, { message: 'Email ' + username + ' not found'}); } else{ //check if password matches and pass parameters in done accordingly } }); })); 

以下是我的RegistrationsController.js文件,我的身份validationapi驻留,

 var passport = require('passport'); exports.authenticate = function(req, res, next){ console.log('Login request!'); passport.authenticate('local', function(err, user, info) { console.log('In authenticate callback!'); if (err) return next(err); if (!user) { req.flash('errors', { msg: info.message }); res.status(500).json({message: info.message}); } res.json(user); })(req, res, next); } 

自从过去两天以来一直在看代码,但还没弄清楚错误。 我已经安装了passportpassport-local模块。 任何帮助将不胜感激。

这段代码中有一个语法错误。 usernameField: 'emailAddress'必须像这样在LocalStrategy构造函数中传递…

 passport.use(new LocalStrategy({ usernameField: 'email' }, yourAuthenticateFunction));