我想使用Typescript的Error
通过TokenExpiredError
库的jwt.verify
函数检查jsonwebtoken
的类型是否为instanceof
抛出。
import jwt from "jsonwebtoken";
function someFunction() {
try {
return jwt.verify(token, key);
}catch(err) {
if(err instanceof TokenExpiredError) {
return attemptRenewal()
}
throw err
}
}
如何导入符号
TokenExpiredError
?我找不到有关此重要课程的任何文档,也没有想到的唯一直观内容
import { jwt, TokenExpiredError } from "jsonwebtoken";
使
jwt
为undefined
。我知道解决方法,例如与类名进行字符串比较,但是我想产生干净的代码。
我正在使用
jsonwebtoken
8.5.1。 最佳答案
jsonwebtoken
导出默认对象,例如:source
module.exports = {
decode: require('./decode'),
verify: require('./verify'),
sign: require('./sign'),
JsonWebTokenError: require('./lib/JsonWebTokenError'),
NotBeforeError: require('./lib/NotBeforeError'),
TokenExpiredError: require('./lib/TokenExpiredError'),
};
这意味着,当您使用
import jwt from "jsonwebtoken";
语法时,jwt
会进入具有默认导出所有属性的对象。您不能使用
import { jwt, TokenExpiredError } from "jsonwebtoken";
,因为在默认导出对象中,我们没有jwt
属性,如果要导入
TokenExpiredError
和默认对象,则可以遵循如下语法:import jwt, {TokenExpiredError} from "jsonwebtoken";
,然后jwt
仍然是默认导出对象,并且具有TokenExpiredError
对象(jwt.TokenExpiredError
和TokenExpiredError
是相同)。如果您只想使用
verify
函数和TokenExpiredError
,则导入行将到达:import {TokenExpiredError, verify} from "jsonwebtoken";
,那么您的函数将类似于:import {TokenExpiredError, verify} from "jsonwebtoken";
function someFunction() {
try {
return verify(token, key);
} catch (err) {
if (err instanceof TokenExpiredError) {
return attemptRenewal()
}
throw err
}
}
关于javascript - 如何导入jsonwebtoken的verify抛出的TokenExpiredError?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56295433/