Паспорт JS -> require (...) не является функцией - PullRequest
1 голос
/ 17 марта 2019

Я получаю эту ошибку, когда пытаюсь запустить сервер, пытаясь установить требуемый модуль 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-х годов, когда неизвестный принтер взял набор шрифтов и скремблировал его, чтобы сделать книгу типовых образцов.Он пережил не только пять веков, но и скачок в электронном наборе текста, оставаясь практически неизменным.Он был популяризирован в 1960-х годах с выпуском листов Letraset, содержащих отрывки из Lorem Ipsum, а позднее - с программным обеспечением для настольных издательских систем, таким как Aldus PageMaker, включая версии Lorem Ipsum.

Ответы [ 2 ]

4 голосов
/ 17 марта 2019

Реализовать это может помочь.

const passport = require ("passport");

3 голосов
/ 17 марта 2019

Это происходит потому, что он думает, что вы пытаетесь вызвать функцию, если ваша ошибка.is not a function

для этого требуется модуль паспорта и попытаться вызвать его с помощью паспорта var в качестве аргумента.

импортировать паспорт как константу,

const passport = require('passport');

ОБНОВЛЕННЫЙ ОТВЕТ

похоже, вы пытаетесь импортировать './config/passport', который, вероятно, не разрешает функцию, см. этот ответ

ОБНОВЛЕННЫЙ ОТВЕТ # 2

похоже, что у вас есть опечатка.попробуйте изменить module.export на module.exports в пользовательском модуле паспорта

...