Node.js+PostgreSQL项目Postman发GET请求报ECONNRESET错误求助
问题根因及修复方案
1. 鉴权中间件未调用next()导致请求挂起
你编写的authorization.js鉴权中间件在token校验通过后,没有执行next()方法将请求传递给后续的路由处理逻辑,会导致请求一直处于待响应状态,超时后Postman就会抛出ECONNRESET错误。
修复方式:在authorization.js的req.user = payload.user;语句后新增一行next()即可,修改后的完整代码如下:
const jwt = require("jsonwebtoken"); require("dotenv").config(); module.exports = async (req, res, next) => { try { const jwtToken = req.header("token"); if (!jwtToken) { return res.status(403).json("Not Authorized"); } const payload = jwt.verify(jwtToken, process.env.jwtSecret); req.user = payload.user; next(); // 校验通过后放行,进入下一个处理逻辑 } catch (err) { console.log(err.message); return res.status(403).json("You are not authorized"); } }
2. /is-verify路由的回调参数顺序写反
jwAuth.js文件里的/is-verify路由的异步回调参数,把req和res的顺序写反了,就算中间件正常放行,到这一步也会因为调用对象错误导致响应异常。
修复方式:把参数顺序调整为正确的(req, res)即可,修改后的代码如下:
router.get("/is-verify", authorization, async (req, res) => { // 调整req和res的顺序 try { res.json(true); } catch (err) { console.log(err.message); res.status(500).send("Server Error") } })
补充说明:你之前的注册、登录接口可以正常调用,是因为这两个接口没有绑定authorization中间件,所以不会触发上述两个问题。修改完成后重启服务,再调用两个需要鉴权的接口就能正常返回结果。
内容的提问来源于stack exchange,提问作者Awais Shahid
相关产品推荐
相关产品推荐

