我想了解流的工作原理。我有一个 readableStream,我正在将其通过管道传输到 writableStream。
但是,当我这样做时,我在控制台中收到此错误。 无法在“ReadableStream”上执行“pipeTo”:非法调用
我正在调用以使用 PipeTo 获取 ReadableStream
并将其传递给 WritableStream
下面是我的代码的相关部分。
let writeStream = fs.createWriteStream(`exports/${exportParams.key}`, {flags:'a'});
writeStream.on('end', function(){
console.log('file downloaded');
});
const fetchData = await exportPopup.evaluate(async (fetchUrl, writeStream) => {
const stream = await fetch(fetchUrl);
stream.body.pipeTo(writeStream);
}, fetchUrl, writeStream);
解决此问题的任何帮助都非常好,谢谢。
最佳答案
您是在使用 node-fetch
还是在使用 electron?我在尝试从电子下载文件时遇到了同样的问题。看起来来自浏览器的流与 fs
使用的流不兼容。我最终做的是。
async function downloadFile(filename, url) {
const file = fs.createWriteStream(filename);
res = await fetch(url);
buffer = await res.arrayBuffer()
file.write(Buffer.from(buffer));
file.close();
}
我不知道这是否是最有效的方法,但它确实有效。
关于javascript - 无法在 'pipeTo' : Illegal invocation 上执行 'ReadableStream',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62389862/