写入node-fetch返回的流

2023-12-24

自述文件包含以下代码作为编写获取的文件的示例:

fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
    .then(res => {
        const dest = fs.createWriteStream('./octocat.png');
        res.body.pipe(dest);
    });

我将连接另一个.then()使用写入磁盘的文件。实际上,我的代码似乎在文件完成写入磁盘之前运行,因此我想到上述代码返回的承诺应该考虑流上“结束”事件的发出。也许是这样的:

fetch(url).then(res => new Promise((resolve, reject) => {
    const dest = fs.createWriteStream(fn);
    res.body.pipe(dest);
    res.body.on('end', () => resolve());
    dest.on('error', reject);
}));

但是当我尝试运行这段代码时,它会抱怨:

类型错误:res.body.on 不是函数

这是有道理的res.body看起来像这样:

{ pipe: [Function: pipe] }

也就是说,根本不是流

两个问题: 1)我怎样才能访问实际的流? 2)如果我无法访问它,我如何知道读取流何时关闭以便我可以解决?

p.s.

不,我无法从中获取流.pipe(),返回未定义的


据我所知,您的代码是正确的。我跑了

const fs = require("fs");
const fetch = require("node-fetch");

fetch("https://assets-cdn.github.com/images/modules/logos_page/Octocat.png")
  .then(
    res =>
      new Promise((resolve, reject) => {
        const dest = fs.createWriteStream("./tmp.txt");
        res.body.pipe(dest);
        res.body.on("end", () => resolve("it worked"));
        dest.on("error", reject);
      })
  )
  .then(x => console.log(x));

它完全按照预期工作并打印"it worked"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

写入node-fetch返回的流 的相关文章

随机推荐