【发布时间】:2019-09-28 03:49:23
【问题描述】:
我使用require("fs").promises只是为了避免使用回调函数。
但是现在,我也想使用fs.createReadstream 来附加一个带有 POST 请求的文件。
我该怎么做?
或者在这种情况下改变 createReadstream 是什么?
还是应该使用require("fs")?
【问题讨论】:
标签: javascript node.js promise stream fs
我使用require("fs").promises只是为了避免使用回调函数。
但是现在,我也想使用fs.createReadstream 来附加一个带有 POST 请求的文件。
我该怎么做?
或者在这种情况下改变 createReadstream 是什么?
还是应该使用require("fs")?
【问题讨论】:
标签: javascript node.js promise stream fs
我是这样做的:
import { promises as fs, createReadStream } from "fs"
await fs.mkdir("path...");
const buff = createReadStream("path ...")
【讨论】:
因此,通过使用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';
【讨论】:
您的问题有点宽泛,但我可以为您指出一些有用的软件包。它并没有涵盖几乎所有的功能,但是 fs-extra 包会自动使很多 fs 函数返回一个承诺,我绝对建议这样做。然后你总是可以同时使用普通的fs。至于fs.createReadStream(),您可能只想将您需要的内容包装在new Promise() 中。
【讨论】: