如何导入jsonwebtoken验证抛出的TokenExpiredError?

Kar*_*ter 6 javascript jwt typescript

我想检查 an 的类型是否ErrorTokenExpiredError由使用 Typescript 的库jwt.verify函数抛出的,例如jsonwebtokeninstanceof

import jwt from "jsonwebtoken";

function someFunction() {
    try {
        return jwt.verify(token, key);
    }catch(err) {
        if(err instanceof TokenExpiredError) {
            return attemptRenewal()
        }
        throw err
    }
}
Run Code Online (Sandbox Code Playgroud)

如何导入符号TokenExpiredError

我没有找到任何关于这个重要课程的文档,也是我想到的唯一直观的文档

import { jwt, TokenExpiredError } from "jsonwebtoken";
Run Code Online (Sandbox Code Playgroud)

原因jwtundefined.

我知道解决方法,例如与类名执行字符串比较,但我想生成干净的代码。

我正在使用jsonwebtoken8.5.1。

Aci*_*ide 10

我有同样的询问,但经过快速搜索和测试后,下面应该可以工作

import * as jwt from "jsonwebtoken";

function someFunction() {
    try {
        return jwt.verify(token, key);
    }catch(err) {
        if(err instanceof jwt.TokenExpiredError) {
            return attemptRenewal()
        }
        throw err
    }
}
Run Code Online (Sandbox Code Playgroud)

TokenExpiredError已作为 jwt 的一部分导入。


hoa*_*gdv 8

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'),
};
Run Code Online (Sandbox Code Playgroud)

这意味着,当您使用import jwt from "jsonwebtoken";语法时,jwt将得到一个具有默认导出的所有属性的对象。

您不能使用import { jwt, TokenExpiredError } from "jsonwebtoken";,因为在默认导出对象中,我们没有jwt属性,

如果你想导入TokenExpiredError默认对象,你可以遵循如下语法:import jwt, {TokenExpiredError} from "jsonwebtoken";,那么jwt仍然是默认导出对象,并且你有TokenExpiredError对象(jwt.TokenExpiredErrorTokenExpiredError是相同的)。

如果您只想使用verify函数 and 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
  }
}
Run Code Online (Sandbox Code Playgroud)