我想了解流的工作原理。我有一个 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/
相关文章:
javascript - 类型注释只能在 TypeScript 文件中使用。 TS(8010)
javascript - 从用户脚本订阅 Angular 路由器事件
javascript - 使用快速服务器在 React 应用程序中热重载
node.js - Heroku Node.js RedisCloud Redis::CannotC
c++ - 使用 clang 格式时,当行很大时如何将右括号换成新行?
html - 有条件地禁用 JQuery 日期选择器上的星期几?
mysql - 为什么 MySQL 8 IF 和 IFNULL 在测试值为 NULL 的变量时返回