2017-01-16 1 views
0

J'utilise l'application Node JS qui se connecte à Kakfa en utilisant kafka-node. J'attrape quelques exceptions s'il y a des erreurs dans la connexion à kafka. Voici le code. Je ne peux pas définir les en-têtes après leur envoi. Quel est le meilleur moyen d'éviter cela? Je suis assez sûr que c'est parce que le code continue après la boucle d'erreur. Comment puis-je éviter cette situation sans supprimer le gestionnaire d'erreur d'envoi.Impossible de définir les en-têtes après leur envoi. Comment l'éviter?

+0

Basé sur le code partagé, je ne reçois pas d'erreur . Mais généralement erreur se produit lorsque vous essayez de définir la réponse après l'envoi de la réponse. – Dnyanesh

+0

Lorsque le code entre dans la fonction de gestionnaire d'erreur, je fais envoyer. Je suppose que c'est là que la connexion se termine, et définit les en-têtes. Quand il est hors de la boucle, encore une fois, je fais res.end. Peut être ceci où le problème est. Corrige moi si je me trompe! –

Répondre

0

vraiment votre problème est que your'e à l'aide de res.send express et res.send fait automatiquement res.end(); c'est pourquoi your'e obtenir cette erreur, retirez res.end()

+0

Oui, c'est vrai seulement. Mais que faire si le gestionnaire d'erreur n'a jamais appelé? Dans ce cas, il va appeler res.end! Alors, est-il possible d'éviter d'appeler res.end si res.send est déjà appelé? –

+0

Je ne vois pas le problème ici, si vous avez une erreur, définissez le statut et envoyez-le. Il serait utile de voir plus de votre code car on ne sait pas ce qui se passe s'il n'y a pas d'erreur. Définir une erreur d'en-tête signifie que vous essayez d'envoyer une réponse qui a déjà été envoyée. –