Я столкнулся с этой странной проблемой в NodeJS при использовании с Passport.js, Express и Mongoose. Обычно я получаю сообщение об ошибке «Невозможно установить заголовки после их отправки клиенту», хотя я не отправляю более одного заголовка.
Я читал другие сообщения и пробовал их, но ни один из них не работал.
- app.get - есть ли любая разница между res.send и return res.send
- Ошибка [ ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту
- Невозможно установить заголовки после их отправки клиенту а>
Я разобрался с проблемами github и не могу найти решения. Проблема заключается в том, что эта ошибка возникает, когда я отправляю несколько заголовков ответов, но факт в том, что я не отправляю несколько заголовков. Это кажется просто странным.
Это моя трассировка стека:
(узел: 9236) DeprecationWarning: текущий синтаксический анализатор строки URL устарел и будет удален в будущей версии. Чтобы использовать новый синтаксический анализатор, передайте параметр {useNewUrlParser: true} в MongoClient.connect.
Сервер работает на порту 5000
Ошибка подключения MongoDB
[ERR_HTTP_HEADERS_SENT]: не удается установить заголовки после их отправки клиенту
в validateHeader (_http_outgoing.js: 503: 11)
в ServerResponse.setHeader ( _http_outgoing.js: 510: 3)
на ServerResponse.header (/Users/lourdesroashan/code/github/devlog/node_modules/express/lib/response.js:767:10)
на ServerResponse.json (/ Пользователи / lourdesroashan / code / github / devlog / node_modules / express / lib / response.js: 264: 10)
в Profile.findOne.then.profile (/ Users / lourdesroashan / code / github / devlog / routes / api /profile.js:27:30)
на ‹anonymous›
Это мой серверный код:
router.get("/userprofile", passport.authenticate('jwt', { session: false }), (req, res) => {
Profile.findOne({ user: req.user.id }).then(profile => {
if (!profile) {
return res.status(404).json({ error: "No Profile Found" });
}
else {
res.json(profile);
}
}).catch(err => {
console.log(err);
})
});
Я понимаю, что означает ошибка, но из того, что я знаю, я не думаю, что отправляю несколько заголовков, я даже проверил с помощью console.log, что запущен только один из блоков.
Огромное спасибо заранее! :)
Полный код по адресу: https://github.com/lourdesr/devlog
РЕДАКТИРОВАТЬ:
Я понял. При попытке получить аутентифицированного пользователя возникла проблема с моим файлом password.js. Я забыл использовать return для метода done, который его вызвал. Просто добавил оператор возврата, и он сработал!