Node.js 发送后无法设置标题:response.redirect()NodeJS

Node.js 发送后无法设置标题:response.redirect()NodeJS,node.js,Node.js,我需要使用differentsresponse.redirect(),但我的控制台出现了一个错误 错误代码:未处理的拒绝错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头 我的代码: // on vérifie si max par semaine atteint si c'est le cas on supprime la resa if (moment(createdItem.date).isSame(new Date(), 'week'

我需要使用differents
response.redirect()
,但我的控制台出现了一个错误

错误代码:
未处理的拒绝错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头

我的代码:

    // on vérifie si max par semaine atteint si c'est le cas on supprime la resa
    if (moment(createdItem.date).isSame(new Date(), 'week')) {
      createdItem.destroy().then(function() {
        request.flash('danger', 'Total de réservation maximum par semaine atteint');
        response.redirect('/user/__show');
      });
    }

    // dans le cas d'un abonnement trouvé on touche pas aux cartes
    if (findedRpaUserServiceSub) {
      request.flash('success', 'Réservation ajoutée');
      response.redirect('/user/__show');
    }

    // si on trouve une carte mais sans abonnement
    if (findedRpaUserServiceCard) {
      if ((findedRpaUserServiceCard.remaining_services - 1) === 0) {
        findedRpaUserServiceCard.destroy().then(function() {
          request.flash('success', 'Réservation ajoutée');
          response.redirect('/user/__show');
        });
      } else {
        findedRpaUserServiceCard.update({
          remaining_services: findedRpaUserServiceCard.remaining_services - 1
        }).then(function() {
          request.flash('success', 'Réservation ajoutée');
          response.redirect('/user/__show');
        });
      }
    }

您正在多次重定向用户。这些如果不是排他性的。您应该至少使用
else if
语句

// on vérifie si max par semaine atteint si c'est le cas on supprime la resa
    if (moment(createdItem.date).isSame(new Date(), 'week')) {
      createdItem.destroy().then(function() {
        request.flash('danger', 'Total de réservation maximum par semaine atteint');
        response.redirect('/user/__show');
      });
    }

    // dans le cas d'un abonnement trouvé on touche pas aux cartes
    else if (findedRpaUserServiceSub) {
      request.flash('success', 'Réservation ajoutée');
      response.redirect('/user/__show');
    }

    // si on trouve une carte mais sans abonnement
    else if (findedRpaUserServiceCard) {
      if ((findedRpaUserServiceCard.remaining_services - 1) === 0) {
        findedRpaUserServiceCard.destroy().then(function() {
          request.flash('success', 'Réservation ajoutée');
          response.redirect('/user/__show');
        });
      } else {
        findedRpaUserServiceCard.update({
          remaining_services: findedRpaUserServiceCard.remaining_services - 1
        }).then(function() {
          request.flash('success', 'Réservation ajoutée');
          response.redirect('/user/__show');
        });
      }
    }
    else {
     // something else
    }

您还可以在每个if中添加一个
return
,以停止进一步的处理,或者在使用expressjs转到下一个中间件时使用
next()

好的,谢谢。如果
,它可以与
一起使用。