Okta Jwt-Verifier не работает - "jwt_verifier_1.OktaJwtVerifier не является конструктором" - PullRequest
0 голосов
/ 11 июля 2019

В моем SPA, после компиляции моего TypeScript и запуска сервера, я получаю:
"TypeError: jwt_verifier_1.OktaJwtVerifier не является конструктором"

Я установил модуль для @ okta /jwt-verify и npm установлены, чтобы убедиться, что модуль есть.

Это мой файл auth.ts с закомментированным оператором import (так как я не думаю, что это правильный способ обойти модульпроблема):


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);
    }
}

И это файл JS после компиляции:


"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
const jwt_verifier_1 = require("@okta/jwt-verifier");
// const OktaJwtVerifier = require('okta/jwt-verifier');
const oktaJwtVerifier = new jwt_verifier_1.OktaJwtVerifier({
    clientId: '0oavj2s8pN39hTh0v356',
    issuer: 'https://dev-214594.okta.com/oauth2/default'
});
function oktaAuth(req, res, next) {
    return __awaiter(this, void 0, void 0, function* () {
        try {
            const token = req.token;
            if (!token) {
                return res.status(401).send('Not Authorised');
            }
            const jwt = yield oktaJwtVerifier.verifyAccessToken(token);
            req.user = {
                uid: jwt.claims.uid,
                email: jwt.claims.sub
            };
            next();
        }
        catch (err) {
            return res.status(401).send(err.message);
        }
    });
}
exports.oktaAuth = oktaAuth;

Сервер должен запуститься без ошибок.

...