const response = await fetch('https://www.google.com')
response.body.pipeThrough(new TextDecoderStream()).pipeTo(process.stdout)
TypeError [ERR_INVALID_ARG_TYPE]: “transform.writable” 属性必须是 WritableStream 的实例。接收到的是 WriteStream 的实例。
问题
- Writable 和 Write 流之间有什么区别?
- WriteSteam(
process.stdout
)能否转换为可写流?
尝试
我试图使stdout可写,但无济于事:
// fails
process.stdout.writable = true
response.body.pipeTo(process.stdout)
一些有效的方法包括:
// works
const response = await fetch('http://www.google.com')
const reader = response.body.pipeThrough(new TextDecoderStream())
for await (const chunk of reader){
process.stdout.write(chunk)
}
// works
Readable.fromWeb(response.body).pipe(process.stdout)
我不太明白“web”流和“node”流之间的区别,我猜它们只是源和目标,但我认为每个I/O流都能重定向到彼此。使用Readable.fromWeb
似乎可以工作,但它在做什么?它似乎效率低下。
能否对process.stdout
进行反向操作?类似于...
response.body.pipeTo(new WritableStream(process.stdout)
process.stdout
可以转换为可写流吗?根据您所说的,可写流似乎是一个更抽象的父类,应该能够使用一些更具体的东西,比如在构造函数中使用 WriteStream。 - Neo Phyte