JSON – 发送后无法发送标题

有时,当我运行这个代码时,我得到以下错误。

Error: Can't set headers after they are sent. 

为什么会发生? 我如何解决它?

 User.findOne({username: username}, function(err, user) { if (err) { console.log(err); res.json({ success: false, message: "Unknown error." }); } if (user != undefined) { res.json({ success: true, message: "User exists." }); } else { res.json({ success: true, message: "User does not exist." }); } }); 

即使发生mongoose错误,您的代码也会继续运行,导致您的应用程序尝试对请求做出两次响应。 在json响应之后添加一个返回值。 像这样:

 if (err) { console.log(err); res.json({ success: false, message: "Unknown error." }); return; } 

有时,数据库在出现错误时会响应两次。 要结束响应,只需返回;

 if (error) { console.log(error); response.json({ success: false, message: "An error occurred." }); return; } 

如果第一个条件成立,那么应用程序不会去任何其他条件发送响应

  else if (user != undefined) {