首页 > 解决方案 > [NodeJS]:将标头发送到客户端后无法设置标头

问题描述

完整的概述和答案可以在第一个答案中找到: 错误:发送到客户端后无法设置标头

我在用:

在注册新用户时,我想检查用户的电子邮件或姓名是否已经存在(因为它们必须是唯一的)。

我有这段代码:

    try {
  let user = await User.findOne({ email })

  if (user) {
    res
      .status(400)
      .json({ status: 'error', body: [{ msg: 'email already exist' }] })
  }

  user = await User.findOne({ name })

  if (user) {
    res
      .status(400)
      .json({ status: 'error', body: [{ msg: 'name already exist' }] })
  }

// ... some more code

} catch(err) {

//... code

}

我不断收到:错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。终端没有显示创建错误的确切位置。

标签: node.jsmongodbexpresshttpmongoose

解决方案


我遇到了同样的问题,但是有一个错字试图将 2 倍的响应发送到我的函数中。看来这也是你的情况。正如@David 所提到的,return 语句使函数退出......

resp.send('OK')
do_stuff
resp.send('OK')

推荐阅读