Эта конкретная ошибка возникает всякий раз, когда вы пытаетесь отправить более одного ответа на один и тот же запрос, и обычно вызывается неправильным асинхронным кодом.
Код, который вы показываете в своем вопросе, не выглядит так, как будто он вызывает эту ошибку, но я вижу код на другом маршруте здесь , который может вызвать эту ошибку.
Где у вас это:
if (!user) {
errors.email = "User not found";
res.status(404).json({ errors });
}
Вам нужно изменить его на:
if (!user) {
errors.email = "User not found";
res.status(404).json({ errors });
// stop further execution in this callback
return;
}
Вы не хотите, чтобы код продолжался после того, как вы сделали res.status(404).json({ errors });
, потому что тогда он попытается отправить другой ответ.
Кроме того, везде у вас есть это:
if (err) throw err;
внутри асинхронного обратного вызова, вам нужно заменить это на что-то, что на самом деле отправляет ответ об ошибке, такой как:
if (err) {
console.log(err);
res.sendStatus(500);
return;
}
Бросок внутри асинхронного обратного вызова просто возвращается в систему событий node.js и не выбрасывается никуда, где вы можете его поймать. Кроме того, он не отправляет ответ на запрос http. Другими словами, он на самом деле не делает то, что должен делать сервер. Поэтому сделайте себе одолжение и никогда не пишите этот код на своем сервере. Если вы получили сообщение об ошибке, отправьте ответ об ошибке.
Поскольку, похоже, вы здесь новичок, я хотел бы поблагодарить вас за добавление ссылки на ваш полный исходный код по адресу https://github.com/lourdesr/devlog, потому что только увидев это, я смог увидеть это место, где ошибка происходит.