TypeError: JwtStrategy 不是构造函数;节点JS

Posted

技术标签:

【中文标题】TypeError: JwtStrategy 不是构造函数;节点JS【英文标题】:TypeError: JwtStrategy is not a constructor; NodeJS 【发布时间】:2018-09-21 06:08:30 【问题描述】:

我正在尝试制作 MEAN Stack(Nodejs、Mongo、Angular 应用程序),现在我正在尝试制作 API 身份验证和令牌。 我正在关注本教程https://www.youtube.com/watch?v=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 不是构造函数 在 module.exports (C:\Users\dan.diaconu\MakeIT\api\config\passport.js:10:18) 在对象。 (C:\Users\dan.diaconu\MakeIT\api\app.js:28:29) 在 Module._compile (module.js:652:30) 在 Object.Module._extensions..js (module.js:663:10) 在 Module.load (module.js:565:32) 在 tryModuleLoad (module.js:505:12) 在 Function.Module._load (module.js:497:3) 在 Function.Module.runMain (module.js:693:10) 启动时(bootstrap_node.js:188:16) 在 bootstrap_node.js:609:3

有什么想法吗?谢谢! :)

【问题讨论】:

替换:const Strategy:JwtStrategy, ExtractJwt = require('passport-jwt'); 而不是:const JwtStrategy = require('passport-jwt').Stategy; const ExtractJwt = require('passport-jwt').ExtractJwt; 【参考方案1】:

您在require 语句Stategy 中有错字。

改变

const JwtStrategy = require('passport-jwt').Stategy;

const JwtStrategy = require('passport-jwt').Strategy;

【讨论】:

以上是关于TypeError: JwtStrategy 不是构造函数;节点JS的主要内容,如果未能解决你的问题,请参考以下文章

Sailsjs 基于 jwt 令牌的身份验证示例

NestJS JwtStrategy 使用 configService 传递密钥

NestJs + Passport - JWTStrategy 永远不会被 RS256 令牌调用

NodeJs JWT 护照

TypeError:“TypeError:函数名称不是 HTMLButtonElement.onclick (/:2:54) 处的函数”

TypeError:不是构造函数