node.js - 无法在护照 .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);
});
});
}
解决方案
您对同一个名称使用两个不同的引用。
var passport = require('passport');
在这里,您定义了护照变量。
module.exports = function(passport) {
在这里,您将参数名称定义为护照。在这种情况下使用护照将参考参数
passport.use(...
从定义的变量调用参数的 use 方法而不是 passport.use 方法。考虑将函数参数名称更改为passport,
可能以外的名称_passport
?
module.exports = function(passport) {
//to
module.exports = function(_passport) {
推荐阅读
- git - 标准错误:致命:无法访问“bitbucket”:SSL 证书问题:无法获取本地颁发者证书
- ios - iOS - 从我的应用程序以编程方式进行 WhatsApp 语音/视频通话
- curl - 当变量不满足 rundeck 中的条件时显示错误消息
- node.js - 打字稿中的类型函数原型
- javascript - ChartJS 上不同的刻度样式
- android - 根据设备访问屏幕高度
- delphi - RAD Studio 10.3.3 欢迎页面使用 Internet Explorer 而不是配置的默认浏览器
- mysql - 为什么我不能直接使用不在函数后面的另一个表中的列?
- velo - WIX 将 Corvid API 与 3rd 方网站一起使用
- ios - 有没有办法在应用程序在 ios 中处于后台时查找用户是否正在打字?