【问题标题】:How can I use fs.createReadstream with fs.promises如何将 fs.createReadstream 与 fs.promises 一起使用
【发布时间】:2019-09-28 03:49:23
【问题描述】:

我使用require("fs").promises只是为了避免使用回调函数。

但是现在,我也想使用fs.createReadstream 来附加一个带有 POST 请求的文件。

我该怎么做? 或者在这种情况下改变 createReadstream 是什么? 还是应该使用require("fs")

【问题讨论】:

    标签: javascript node.js promise stream fs


    【解决方案1】:

    我是这样做的:

    import { promises as fs, createReadStream } from "fs"
    
    await fs.mkdir("path...");
    
    const buff = createReadStream("path ...")
    

    【讨论】:

      【解决方案2】:

      因此,通过使用const fs = require('fs').promises;,您只能访问fs 模块的promise 版本。根据规范,File System Promises API 中没有等效的 createReadStream 条目。如果您想要该功能,除了 fs 的承诺版本之外,您还需要存储对它的引用。

      我鼓励任何阅读本文的人在文件顶部使用以下内容,以包含 Promise api 和 createReadStreams 的能力。

      const fs = require('fs').promises;
      const createReadStream = require('fs').createReadStream;
      

      您创建的读取流将如下所示(注意不再包括前置的fs.):

      createReadStream('/your/path/here');
      

      同样重要的是要注意:

      根据规范,您最终会希望改用以下内容(免责声明,当前开箱即用的节点在没有某些标志/依赖项的情况下无法执行此操作)

      import { createReadStream } from 'fs';
      

      【讨论】:

        【解决方案3】:

        您的问题有点宽泛,但我可以为您指出一些有用的软件包。它并没有涵盖几乎所有的功能,但是 fs-extra 包会自动使很多 fs 函数返回一个承诺,我绝对建议这样做。然后你总是可以同时使用普通的fs。至于fs.createReadStream(),您可能只想将您需要的内容包装在new Promise() 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-02
          • 1970-01-01
          • 2023-03-13
          • 2014-09-25
          • 2016-01-30
          • 2015-12-13
          • 2020-09-15
          • 2020-06-03
          相关资源
          最近更新 更多