首页 > 解决方案 > 无法在护照 .js 文件中读取未定义的属性“使用”

问题描述

我创建了一个文件夹 config 并在其中创建了 passport.js 文件,当我尝试运行我的代码时,该文件包含所有配置护照TypeError: Cannot read property 'use' of undefined模块passport.use(new LocalStrategy(function(username, password, done) {

护照.js 文件:

    var express = require('express');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../server/model/userModel');
const bcrypt = require('bcrypt');
var passport = require('passport');

module.exports = function(passport) {
    // Local Strategy
    passport.use(new LocalStrategy(function(username, password, done) {
        // Match Username
        let query = { username: username };
        User.findOne(query, function(err, user) {
            /*
            if (err) throw err;
            if (!user) {
                return done(null, false, { message: 'No user found' });
            }
            */
            if (err) { return done(err); }
            if (!user) {
                return done(null, false, { message: 'Incorrect username.' });
            }

            // Match Password
            bcrypt.compare(password, user.password, function(err, isMatch) {
                if (err) throw err;
                if (isMatch) {
                    return done(null, user);
                } else {
                    return done(null, false, { message: 'Wrong password' });
                }
            });


        });


    }));

    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });


    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });

}

标签: node.jsexpresspassport.jsnode-modules

解决方案


您对同一个名称使用两个不同的引用。

var passport = require('passport');

在这里,您定义了护照变量。

module.exports = function(passport) {

在这里,您将参数名称定义为护照。在这种情况下使用护照将参考参数

passport.use(...

从定义的变量调用参数的 use 方法而不是 passport.use 方法。考虑将函数参数名称更改为passport,可能以外的名称_passport

module.exports = function(passport) {
//to
module.exports = function(_passport) {

推荐阅读