【问题标题】:Passport throwing "undefined is not a function"护照抛出“未定义不是函数”
【发布时间】:2014-07-14 02:27:04
【问题描述】:

这是我第一次使用护照。

当我尝试启动我的应用程序时,我不断收到此错误:

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)

这是 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);

我错过了什么?

【问题讨论】:

    标签: javascript node.js mongoose passport.js passport-local


    【解决方案1】:

    改变

    var LocalStrategy = require('passport-local').LocalStrategy;
    

    var LocalStrategy = require('passport-local').Strategy;
    

    passport-local 模块 exports Strategy:

    var Strategy = require('./strategy');
    exports.Strategy = Strategy;
    

    【讨论】:

    • 刚刚在passport-local v1.0.0中找到源代码是:module.exports = Strategy;,不知道是不是变了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多