如何导入jsonwebtoken的verify抛出的TokenExpiredError?
Posted
技术标签:
【中文标题】如何导入jsonwebtoken的verify抛出的TokenExpiredError?【英文标题】:How to import TokenExpiredError thrown by jsonwebtoken's verify? 【发布时间】:2019-10-11 05:18:36 【问题描述】:我想通过jsonwebtoken
库的jwt.verify
函数使用Typescript的instanceof
检查Error
的类型是否为TokenExpiredError
,例如
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。
【问题讨论】:
【参考方案1】:我有同样的询问,但经过快速搜索和测试,下面应该可以工作
import * as jwt from "jsonwebtoken";
function someFunction()
try
return jwt.verify(token, key);
catch(err)
if(err instanceof jwt.TokenExpiredError)
return attemptRenewal()
throw err
TokenExpiredError
已作为 jwt 的一部分导入。
【讨论】:
【参考方案2】: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
和@ 987654333@同理)。
如果你只想使用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
【讨论】:
以上是关于如何导入jsonwebtoken的verify抛出的TokenExpiredError?的主要内容,如果未能解决你的问题,请参考以下文章
无论如何,NodeJS 都会抛出 `UNABLE_TO_VERIFY_LEAF_SIGNATURE`
将 ObjectID 与 jwt.sign() 和 verify() 一起使用