Okta Jwt-Verifier无法正常工作-“ jwt_verifier_1.OktaJwtVerifier不是构造函数”

时间:2019-07-10 23:46:06

标签: node.js typescript server jwt okta

在我的SPA中,编译了TypeScript之后,然后启动服务器,我得到:
“ TypeError:jwt_verifier_1.OktaJwtVerifier不是构造函数”

我已经为@ okta / jwt-verifier安装了模块,并已安装npm以确保该模块在那里。

这是我的auth.ts文件,其中的import语句已被注释掉(因为我认为这不是解决模块问题的正确方法):

@Inject
private ServletContext servletContext;

这是编译后的JS文件:


import { Request, Response, NextFunction } from 'express';
// import { OktaJwtVerifier } from '@okta/jwt-verifier';

const OktaJwtVerifier = require('okta/jwt-verifier');

const oktaJwtVerifier = new OktaJwtVerifier({
    clientId: '{{clientID}}',
    issuer: '{{OktaURL}}'
});

export async function oktaAuth(req:Request, res:Response, next:NextFunction) {
    try {
        const token = (req as any).token;
        if (!token) {
            return res.status(401).send('Not Authorised');
        }
        const jwt = await oktaJwtVerifier.verifyAccessToken(token);
        req.user = {
            uid: jwt.claims.uid,
            email: jwt.claims.sub
        };
        next();
    }
    catch (err) {
        return res.status(401).send(err.message);
    }
}

服务器应该启动,没有任何错误。

2 个答案:

答案 0 :(得分:0)

导入此文件的正确方法是使用:

import * as OktaJwtVerifier from '@okta/jwt-verifier';

此外,还没有为TypeScript正确声明类型。您将需要在项目的根目录下创建一个global.d.ts(如果尚未创建),其中包含:

declare module "@okta/jwt-verifier";

@ okta / okta-sdk-node-js可以使用相同的方法。

答案 1 :(得分:0)

更好的方法是尝试使用此导入代替通配符:

import OktaJwtVerifier from '@okta/jwt-verifier';