繁体   English   中英

发送到客户端后无法设置标头 node.js 错误

[英]Cannot set headers after they are sent to the client node-js error

我的代码中出现“错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置”错误。

router.get("/", verify, async (req, res) => {
  const user = await pool.query("SELECT * FROM users WHERE id = $1", [req.user]);
  if (user.rows.length) {
    return res.status(200).json({ user: user.rows[0] });
  } else {
    return res.status(403).json({ msg: "Not Authorized" });
  }
});

下面是验证中间件,

try {
  const { auth } = req.cookies;
  if (!auth) {
    return res.status(403).json({ msg: "Not Authorized" });
  } else {
    const data = jwt.verify(auth, process.env.JWT_SECRET);
    req.user = data.id;
    next();
  }
} catch (error) {
  return res.status(403).json({ msg: "Not Authorized" });
}
next();

如果有人帮忙,我会很高兴。

如果走的是verify中间件的else分支,则执行两次next() 这导致其他中间件的两次执行,因此导致两个响应,从而导致观察到的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM