Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту. ASYN C AWAIT не работает - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь проверить, есть ли какие-либо данные в сеансе. Если нет, контроллер перенаправит вас на другой маршрут, чтобы получить эти данные. Проблема в том, что я получаю сообщение об ошибке «Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту»

Я выполняю поиск в StackOverflow и обнаруживаю, что все, у кого возникла эта проблема, исправляют ее с помощью асинхронной работы. / ожидание, но я уже использовал asyn c ожидание.

Ваша помощь будет высоко оценена! Большое спасибо! Хосе

dashboardCtrl.init = async (req, res) => {
//
  var frontdata = req.session;
  if (!frontdata.user) {
    frontdata.user = await userfacebook.findOne({ where: { 'email': frontdata.passport.user } });

  };
  if (!frontdata.store) {
    tmpstoredata = await userstore.findOne({ where: { 'userfacebookId': frontdata.user.id } });
    if (!tmpstoredata) {
      res.redirect('/toURL');
    };
  };
};

Примечание: я использую E JS MATE. Если я делаю это

dashboardCtrl.init = async (req, res) => {
//
      res.redirect('/toURL');
};

Перенаправление работает, проблема заключается в использовании await. Так что я не знаю, как продолжить

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Эта ошибка говорит о том, что вы уже отправили ответ клиенту. Другими словами, вы пытаетесь объявить во второй раз -> ** res. *****.

Проверьте поток еще раз, если вы дважды объявили какое-либо действие для express 's " res ".

Приведенное ниже решение позволяет вам иметь хороший структурированный и читаемый асинхронный код.

dashboardCtrl.init = (req, res) => {

// I think destructuring looks good
let { user, store } = req.session;

(async () => {
    try {
        if (!user) user = await userfacebook.findOne({ where: { 'email': frontdata.passport.user } });
        let tmpstoredata;
        if (!store) tmpstoredata = await userstore.findOne({ where: { 'userfacebookId': frontdata.user.id } });

        if (!tmpstoredata) res.redirect('/toURL');

    } catch (err) {
        // don't forget ;)
    }
})()
};

Надеюсь, это поможет вам. Привет.

0 голосов
/ 22 апреля 2020
  • Код был в порядке
  • Проблема была в E JS MATE
  • Я заменил его на E JS
...