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

标签 javascript node.js puppeteer

我想了解流的工作原理。我有一个 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 - 如果 URL 的域错误,img.onerror() 似乎不会触发

node.js - waitUntil : 'domcontentloaded' 之后,并非所有 DOM 内容都准备就绪

javascript - 寻找一种编写自定义 Puppeteer 命令的方法

php - 从 Flex 打开自定义 IE 窗口或窗口可以自定义自身吗?

javascript - jquery ajax成功结果为null

javascript - 使用 Vue.js 在 v-for 中设置背景图片

javascript - 使用引用数组手动排序数组

node.js - 无法通过express.js和路径在views目录中查找 View

node.js - 如何使用 NTLM 身份验证在 Node js 中调用 SOAP Web 服务

javascript - 将 Jest 与 Puppeteer 一起使用 : Evaluation failed: ReferenceError: cov_4kq3tptqc is not defined