javascript - 传递给函数后未定义的护照对象
问题描述
我在 app.js 中有以下代码:
const passport = require('passport');
const { initializePassport } = require('./passportConfig');
initializePassport(
passport,
email => Account.find(user => user.email === email),
id => Account.find(user => user._id === id)
);
初始化护照功能:
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt');
function initializePassport (passport, getUserByEmail, getUserById) {
console.log(passport);
const authenticateUser = async (email, password, done) => {
const user = getUserByEmail(email);
if(user == null) {
return done(null, false, { message: "no user with given email" });
}
try {
if(bcrypt.compare(password, user.password)) {
return done(null, user);
} else {
return done(null, false, { message: "password incorrect" });
}
} catch(e) {
return done(e);
}
}
passport.use(new LocalStrategy({ usernameField: 'email'}, authenticateUser));
passport.serializeUser((user, done) => done(null, user._id))
passport.deserializeUser((id, done) => {
return done(null, getUserById(id))
})
}
module.exports = initializePassport();
我正在将我在 app.js 中声明的护照对象传递给 initializePassport 函数,但我收到以下错误:
passport.use(new LocalStrategy({ usernameField: 'email'}, authenticateUser));
^
TypeError: Cannot read property 'use' of undefined
为了验证该对象确实是未定义的,我对其进行了 console.log() 操作,果然,它打印了未定义的。如果我要注释掉 .use() 语句,在 .serializeUser() 函数上也会出现同样的错误。为什么护照对象未定义,如何将其传递给函数?
解决方案
我仍然不知道究竟是什么导致了这个问题,但是将 initializePassport 定义移动到 app.js 解决了这个问题。
推荐阅读
- php - Laravel PHP无法访问函数内的变量
- c++ - WinAPI STARTUPINFO 64 位 (QB64) 的字节打包
- c++ - 为什么 dll 导入的不带参数的 C/C++ 函数在 VB 应用程序中不起作用,而带有参数的函数则可以?
- xml - Googlesheets 功能 - Yahoo Finance 中列文本的 IMPORTXML Xpath 困难
- c# - C#(.Net 4.8 框架)如何将 API POST 调用中的查询字符串参数从标题更改为正文并在新选项卡中打开 PDF
- c# - 在 C# 中使用 Selenium WebDriver,如何访问开始和结束 div 标签之间的文本?
- java - 无法形成单个查询来连接多个表
- ms-access-2016 - MS Access:将一张表的多个查询结果与同一张表的查询结果进行比较
- node.js - 用户'root'@'localhost'的访问被拒绝(使用密码:YES)代码似乎是正确的
- ruby-on-rails - Rails Heroku 部署错误:预编译资产失败 – Sprockets::FileNotFound: 找不到类型为 'application/javascript' 的文件 'angular'