我正在使用流请求。对于流来说,我不确定处理错误的最佳方法是什么。具体来说,这个请求可能会发送一个403,我想捕获它,如果有错误,则不发送管道响应。
got.stream(url)
.on("error", (e) => {
console.log(e)
})
.pipe(res)
在本例中,即使响应返回403
,响应仍将通过管道传输到res
。防止响应被管道化的正确方法是什么,或者是否有更好或更习惯的方法来做到这一点?
我尝试了你的代码与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
不同,您可以侦听响应事件以将您获得的响应管道传输到另一个响应流。