2016-08-19 112 views
0

我正在使用got來傳輸請求。我不確定處理錯誤的最佳方法是什麼。具體來說,這個請求可能會發送一個403,我想捕獲它,並且如果發生錯誤,則不會傳遞響應。流錯誤處理

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

在這個例子中,響應仍然會得到管道輸送至res即使響應返回403。什麼是正確的方式來保持對管道的迴應,還是有更好或更習慣的方式去做這件事?

+0

你在快速中間件或節點的http請求處理程序中使用'got'嗎?內部表達中間件內的 – winter

+0

@ winter。 – carebdayrvis

回答

1

我試着用url指向我的博客的代碼。但是,如果您在got實例上調用pipe,它似乎並不關心error事件是否已觸發。

所以,這裏的變通方法:

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

而是從got對象調用直接pipe的,你可以聽的響應事件,管你有另一個響應流的響應。

+0

謝謝@winter!我想我必須解決這個問題,但我不認爲只需在'.on('response')'回調中輸入響應。 – carebdayrvis

+0

@carebdayrvis不客氣。 – winter