Я пытаюсь создать MEAN-стек (приложение Nodejs, Mongo, Angular), и прямо сейчас я пытаюсь выполнить аутентификацию и токен API. Я следую этому руководству https://thewikihow.com/video_6pdFXmTfkeE&t=185s, и сейчас мойpassport.js выглядит так:
passport.js
const JwtStrategy = require('passport-jwt').Stategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../models/user');
const config = require('../config/database');
module.exports = function (passport) {
let opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("jwt");
passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
User.getUserById(jwt_payload.data._id, (err, user) => {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
}
});
}));
}
Получаю следующую ошибку:
TypeError: JwtStrategy is not a constructor at module.exports (C:\Users\dan.diaconu\MakeIT\api\config\passport.js:10:18) at Object. (C:\Users\dan.diaconu\MakeIT\api\app.js:28:29) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:188:16) at bootstrap_node.js:609:3
Есть идеи, пожалуйста? Спасибо! :)
У вас есть опечатка в операторе require
Stategy
.
Изменять
const JwtStrategy = require('passport-jwt').Stategy;
к
const JwtStrategy = require('passport-jwt').Strategy;
заменить:
const { Strategy:JwtStrategy, ExtractJwt} = require('passport-jwt');
вместо:const JwtStrategy = require('passport-jwt').Stategy; const ExtractJwt = require('passport-jwt').ExtractJwt;