javascript - 无法在 'pipeTo' : Illegal invocation 上执行

我想了解流的工作原理。我有一个 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 应用程序中热重载

git - Flutter升级后Flutter找不到git

node.js - Heroku Node.js RedisCloud Redis::CannotC

c++ - 使用 clang 格式时,当行很大时如何将右括号换成新行?

html - 有条件地禁用 JQuery 日期选择器上的星期几?

mysql - 为什么 MySQL 8 IF 和 IFNULL 在测试值为 NULL 的变量时返回

python - 如何在 PySpark window() 中使用毫秒作为参数。函数之间的范围?

python - 如何使用 API 与 Google Colab 交互?