当我尝试运行服务器时,我收到此错误,尝试需要护照模块。
Passport JS -> require(...) 不是一个函数
const passport = require('passport');
require('./config/passport')(passport);
更新 这里是护照文件
const LocalStrategy = require('passport-local').Strategy;
const User = require('../app/models/user');
module.export = 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: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, email, password, done) {
User.findOne({ 'local.email': email }, function(err, user) {
if (err) { return done(err); }
if (user) {
return done(null, false, req.flash('signupMessage', 'El email ya existe'));
} else {
var newUser = new User();
newUser.local.email = email;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err) {
if (err) { throw err; }
return done(null, newUser);
});
}
})
}));
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
function(req, email, password, done) {
User.findOne({ 'local.email': email }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, req.flash('loginMessage', 'El email no ha sido encontrado'));
}
if (!user.validatePassword(password)) {
return done(null, false, req.flash('loginMessage', 'Wrong password'));
}
return done(null, user);
})
}));
}
实现这一点可能会有所帮助。
const passport=require("passport");
发生这种情况是因为它认为您正在尝试调用一个函数来纠正您的错误。is not a function
它需要护照模块,并尝试使用护照 var 作为参数调用它。
进口护照作为常数,
const passport = require('passport');
更新的答案
似乎 您正在尝试导入可能无法解析为函数的'./config/passport'
请参考 这个答案
更新的答案 #2
好像你有一个错别字. 尝试在护照自定义模块中将module.export
更改为module.exports