【问题标题】:Passport JS -> require(...) is not a functionPassport JS -> require(...) 不是函数
【发布时间】:2019-08-08 03:26:10
【问题描述】:

我在尝试运行服务器时遇到此错误,尝试使用 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 的版本)而普及。

【问题讨论】:

  • 您在控制台中遇到什么类型的错误?

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


【解决方案1】:

实施它可能会有所帮助。

const passport=require("passport");

【讨论】:

    【解决方案2】:

    发生这种情况是因为它认为您正在尝试调用一个函数并导致您的错误。 is not a function

    它需要护照模块并尝试使用护照变量作为参数来调用它。

    将护照作为常量导入,

    const passport = require('passport');

    更新答案

    看来 您正在尝试导入 './config/passport' 可能无法解析为函数,请参阅 this answer

    更新的答案 #2

    好像你有一个错字。尝试在您的护照自定义模块中将module.export 更改为module.exports

    【讨论】:

    • 感谢您的帮助。然而,它已经完成了,我认为这是理所当然的。还是不行
    • @VictorSegovia 你能发帖'./config/passport' 吗?
    • @VictorSegovia 尝试写module.exports 而不是module.export
    猜你喜欢
    • 2020-05-18
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2016-07-06
    • 1970-01-01
    • 2017-04-18
    • 2016-02-14
    相关资源
    最近更新 更多