Passport JS -> require(...) 不是函数
Passport JS -> require(...) is not a function
当我尝试 运行 服务器时遇到此错误,尝试请求 Passport 模块。
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);
})
}));
}
Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商拿走了一个字体厨房,并把它加在一起制作了一本字体样本书。它不仅经历了五个世纪,而且还经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 工作表的发布而流行,最近随着桌面出版软件如 Aldus PageMaker 的发布而流行,其中包括 Lorem Ipsum 的版本。
实施这个可能会有帮助。
const passport=require("passport");
发生这种情况是因为它认为您正在尝试调用错误的函数。 is not a function
它需要护照模块并尝试使用护照变量作为参数调用它。
导入护照作为常量,
const passport = require('passport');
更新的答案
好像
您正在尝试导入 './config/passport'
,这可能无法解析为函数,请参阅
更新的答案 #2
你好像打错了。尝试在您的护照自定义模块
中将 module.export
更改为 module.exports
当我尝试 运行 服务器时遇到此错误,尝试请求 Passport 模块。
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);
})
}));
}
Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商拿走了一个字体厨房,并把它加在一起制作了一本字体样本书。它不仅经历了五个世纪,而且还经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 工作表的发布而流行,最近随着桌面出版软件如 Aldus PageMaker 的发布而流行,其中包括 Lorem Ipsum 的版本。
实施这个可能会有帮助。
const passport=require("passport");
发生这种情况是因为它认为您正在尝试调用错误的函数。 is not a function
它需要护照模块并尝试使用护照变量作为参数调用它。
导入护照作为常量,
const passport = require('passport');
更新的答案
好像
您正在尝试导入 './config/passport'
,这可能无法解析为函数,请参阅
更新的答案 #2
你好像打错了。尝试在您的护照自定义模块
中将module.export
更改为 module.exports