2016-08-19 1 views
0

Ich verwende got, um eine Anfrage zu streamen. Neu bei Streams, ich bin mir nicht sicher, was der beste Weg ist, mit Fehlern umzugehen. Insbesondere könnte diese Anfrage eine 403 senden, die ich abfangen möchte, und die Antwort nicht pipen, wenn ein Fehler vorliegt.Stream Fehlerbehandlung

got.stream(url) 
.on("error", (e) => { 
    console.log(e) 
}) 
.pipe(res) 

In diesem Beispiel wird immer noch die Antwort selbst zu res verrohrt erhalten, wenn die Antwort ein 403 zurückgegeben. Was ist der richtige Weg, um die Antwort zu vermeiden, oder gibt es eine bessere oder mehr idiomatische Art, dies zu tun?

+0

Haben Sie in Ihrem Express-Middleware- oder Knoten-HTTP-Request-Handler "erhalten"? – winter

+0

@Winter innerhalb Express-Middleware. – carebdayrvis

Antwort

1

Ich habe versucht, Ihren Code mit url auf meinem Blog zu zeigen. Es scheint jedoch, dass es nicht wichtig ist, ob das Ereignis error ausgelöst wird oder nicht, wenn Sie pipe auf got Instanz aufrufen.

So, hier ist die Abhilfe:

got.stream(url) 
    .on('response', response => { 
    response.pipe(res); // pipe to express's res. 
    }) 
    .on('error', err => { 
    // handle error 
    }); 

Anstatt die pipe direkt von got Objekt aufrufen, müssen Sie eine Antwort Ereignis Rohr hören die Antwort, die Sie auf eine andere Antwortstream bekam.

+0

Danke @winter! Ich dachte, ich müsste das umgehen, aber ich dachte nicht, dass ich nur die Antwort im '.on ('response') - Callback pipen sollte. – carebdayrvis

+0

@carebdayrvis du bist willkommen. – winter