在我的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);
}
}
服务器应该启动,没有任何错误。
答案 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';