为什么 passport.serializeUser 不是函数?
Why is passport.serializeUser not a function?
我已经搜索了将近一个小时,但我找不到我的代码的问题,我也无法在 inter 上找到解决方案,我什至在 Discord 上的其他编码社区寻求帮助,但没有- 知道为什么我有这样的错误。
我一直在努力学习本教程https://mherman.org/blog/node-passport-and-postgres/#objectives to get to know the passport package - https://www.npmjs.com/package/passport
我有以下文件
userController.ts
import { Request, Response } from 'express';
import * as fs from 'fs';
import * as Path from 'path';
import passport = require('../../auth/local');
export const userLogIn = async (req: Request, res: Response) => {
passport.default.authenticate('local', (err, user, info) => {
if (err) { res.status(500).send('error'); }
if (!user) { res.status(404).send('User not found!'); }
if (user)
{
req.logIn(user, function (err) {
if (err) { res.status(500).send('error'); }
res.status(200).send('success!');
});
}
});
return;
}
local.ts
import * as passport from 'passport';
import passport_local = require('passport-local');
const LocalStrategy = passport_local.Strategy;
import init = require('../passport');
import { knex } from '../knex/knex';
import * as bcrypt from 'bcrypt';
const options = {
usernameField: 'email',
passwordField: 'password'
};
init.default();
export default passport.use(new LocalStrategy(options, (username, password, done) => {
knex('accounts').where({userEmail: username}).first()
.then((user) => {
if (!user) return done(null, false)
if(!bcrypt.compareSync(password, user.userPassword)) {
return done(null, false);
}
else {
return done(null, user);
}
})
.catch((err) => { return done(err); });
}));
以及我遇到问题的文件
passport.ts
import * as passport from 'passport';
import { knex } from './knex/knex';
export default function(){
passport.serializeUser<any, any>(function(user, done) {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
knex('accounts').where({userId: id}).first()
.then((user) => { done(null, user) })
.catch((err) => { done(err, null) });
});
}
我的错误:
TypeError: passport.serializeUser is not a function
我为护照安装并导入了@types,如果我将鼠标悬停在导入护照上,它会显示它是从@types 文件夹中导入的。
我不知道是什么原因造成的。
是的,一个函数与 'function' 一起使用,另一个与箭头一起使用,因为我尝试更改它以寻找解决方案,但似乎没有任何效果。
我猜你导入的方式不对。
import passport from "passport";
- 应该根据代码来源工作
我已经搜索了将近一个小时,但我找不到我的代码的问题,我也无法在 inter 上找到解决方案,我什至在 Discord 上的其他编码社区寻求帮助,但没有- 知道为什么我有这样的错误。
我一直在努力学习本教程https://mherman.org/blog/node-passport-and-postgres/#objectives to get to know the passport package - https://www.npmjs.com/package/passport
我有以下文件
userController.ts
import { Request, Response } from 'express';
import * as fs from 'fs';
import * as Path from 'path';
import passport = require('../../auth/local');
export const userLogIn = async (req: Request, res: Response) => {
passport.default.authenticate('local', (err, user, info) => {
if (err) { res.status(500).send('error'); }
if (!user) { res.status(404).send('User not found!'); }
if (user)
{
req.logIn(user, function (err) {
if (err) { res.status(500).send('error'); }
res.status(200).send('success!');
});
}
});
return;
}
local.ts
import * as passport from 'passport';
import passport_local = require('passport-local');
const LocalStrategy = passport_local.Strategy;
import init = require('../passport');
import { knex } from '../knex/knex';
import * as bcrypt from 'bcrypt';
const options = {
usernameField: 'email',
passwordField: 'password'
};
init.default();
export default passport.use(new LocalStrategy(options, (username, password, done) => {
knex('accounts').where({userEmail: username}).first()
.then((user) => {
if (!user) return done(null, false)
if(!bcrypt.compareSync(password, user.userPassword)) {
return done(null, false);
}
else {
return done(null, user);
}
})
.catch((err) => { return done(err); });
}));
以及我遇到问题的文件
passport.ts
import * as passport from 'passport';
import { knex } from './knex/knex';
export default function(){
passport.serializeUser<any, any>(function(user, done) {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
knex('accounts').where({userId: id}).first()
.then((user) => { done(null, user) })
.catch((err) => { done(err, null) });
});
}
我的错误:
TypeError: passport.serializeUser is not a function
我为护照安装并导入了@types,如果我将鼠标悬停在导入护照上,它会显示它是从@types 文件夹中导入的。
我不知道是什么原因造成的。
是的,一个函数与 'function' 一起使用,另一个与箭头一起使用,因为我尝试更改它以寻找解决方案,但似乎没有任何效果。
我猜你导入的方式不对。
import passport from "passport";
- 应该根据代码来源工作