相关疑难解决方法(0)

写入 node-fetch 返回的流

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

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

我将连接另一个.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);
}));
Run Code Online (Sandbox Code Playgroud)

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

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

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

{ pipe: [Function: pipe] }
Run Code Online (Sandbox Code Playgroud)

也就是说,根本不是流

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

ps

不,我无法从 获取流.pipe(),它返回 undefined

javascript stream node-fetch

7
推荐指数
2
解决办法
9056
查看次数

标签 统计

javascript ×1

node-fetch ×1

stream ×1