前端时间在编写代码的时候遇见一个问题,前前后后死活找不到原因所在,直到最后找到原因之后,才发现是如此低级的一个错误!但是这个低级错误却因为try catch导致发现的时间延后。

这里有一段代码:

let userid;
try {
    const decoded = jwt.verify(token, req.apikey);
    userid = decoded.id;
  } catch (error) {
    return res.json({ success: 0, message: '用户信息错误,请重新登录尝试!' });
  }

其目的是将post到api中的token用jsonwebtoken解码,拿到储存在token中的payload,这里也就是id。

如果时间过期,或者token不正确,都会捕获错误,并且返回用户信息错误!但是我在postman中先登录拿到token之后,又用token请求这个API,一直返回用户信息错误,我就很纳闷,到底哪里有问题,运行express程序之后也没有问题。

到最后我才发现是没有引用jwt,即

const jwt = require('jsonwebtoken');

就是如此低级的错误,又因为使用了try catch迟迟没有找到原因,实在是一种羞辱!

故有时候开发的时候要慎用try catch,可以在运行没问题之后再添加上try catch。