提问者:小点点

[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

}

我一直在获取:Error[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头。终端没有显示错误产生的确切位置。


共1个答案

匿名用户

响应是,而不是

因此,代码继续处理第二个条件并再次尝试发送响应,但是express让我们知道响应已经发送,并且它不能再更改这些响应。

解决方案相当简单--添加,并确保在尝试发送另一个响应之前停止此代码。