首页 > 解决方案 > (节点:12728)UnhandledPromiseRejectionWarning:TypeError:无法读取 null 的属性“名称”

问题描述

我正在尝试检查令牌是否已过期,并且当 JWT 过期时我得到正确的结果,但是当用户令牌未过期时我收到错误消息。

const verified = jwt.verify(token, process.env.SECRET, (err) => {
    if (err.name === "TokenExpiredError") {
      return res.status(403).send({
        status: 403,
        message: "TokenExpired"
      });
    }
});
req.tokenData = verified;

当令牌未过期时,我收到以下错误:

(节点:12728)UnhandledPromiseRejectionWarning:TypeError:无法读取 null 的属性“名称”

标签: node.jsjwt

解决方案


您需要先检查 err,如果err是 falsy,则表示没有错误。否则,您可以继续使用您的代码检查错误名称。

const verified = jwt.verify(token, process.env.SECRET, (err) => {
    if (err) {
        if (err.name === "TokenExpiredError") {
            return res.status(403).send({
              status: 403,
              message: "TokenExpired"
            });
          }
    } else {
        // token is good
    }

})

推荐阅读