DollyPapper
@DollyPapper

Ошибка отправки http ответа express после запроса в базу?

Коллеги, привет.
Есть такой вот контроллер(смысла в нем нет, просто показательно).
async register(req, res) {
    
    try {
      
      await UserModel.findAll();
      console.log('THIS');
      res.send('THIS');
    }catch (e) {
      res.send('ERROR');
      console.log('ERROR CATCHING');
    }


При запросе через сиквалайз в базу, если делать вызов функции findAll через await получаем следующую ошибку
spoiler

node:internal/process/promises:245
triggerUncaughtException(err, true /* fromPromise */);
^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:329:5)
at ServerResponse.setHeader (node:_http_outgoing:573:11)
at ServerResponse.header (/Users/denisdavydov/Desktop/espp_service/node_modules/express/lib/response.js:771:10)
at ServerResponse.send (/Users/denisdavydov/Desktop/espp_service/node_modules/express/lib/response.js:170:12)
at register (/Users/denisdavydov/Desktop/espp_service/controller/User.js:31:11)
at processTicksAndRejections (node:internal/process/task_queues:94:5) {
code: 'ERR_HTTP_HEADERS_SENT'

Как будто что-то неявно уже установило заголовок. Если делать запрос синхронно, то ответ отправляется в клиент. Сам запрос отрабатывает, console.log после него отрабатывает (выводит THIS), а вот res.send("THIS") уже падает с ошибкой выше. В чем может быть проблема?
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
DollyPapper
@DollyPapper Автор вопроса
Вопрос решен. Я по собственной глупости в middleware при проверке соединения с БД два раза вызывал next()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы