В моем 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;
Сервер должен запуститься без ошибок.