无法从 fs.readdir 获取 fs.Dirent 的数组

Can't get array of fs.Dirent from fs.readdir

我正在使用节点 8.10.0。

fs.readdir() returns 文件名和子目录名数组,或 fs.Dirents[].

我无法让它工作。这是一个简单的例子:

console.log(require("fs").readdirSync("/", {withFileTypes:true}));

这给了我一个字符串数组(例如 ["bin", "mnt", "usr", "var", ...]),而不是一个 fs.Dirent 对象数组(这是我想要的)。

我如何让它工作?

已在 v10.10.0 中添加了所需的功能,您必须更新节点。

我遇到了同样的问题,虽然我有最新的 node.js(当前为 v10.16)并且 VS Code 中的智能感知与 online documentation 一致,但 run-time现实让我吃惊。但那是因为代码由 node.js v10.2(在 VS 代码扩展中)执行。

所以在 node.js 10.2 上,这段代码对我有用,可以在 directory:

中获取文件
import * as fs from 'fs';
import util = require('util');
export const readdir = util.promisify(fs.readdir);

let fileNames: string[] = await readdir(directory)
    // keep only files, not directories
    .filter(fileName => fs.statSync(path.join(directory, fileName)).isFile());

在最新的 node.js 上,可以这样简化相同的代码:

let fileEnts: fs.Dirent[] = await fs.promises.readdir(directory, { withFileTypes: true });

let fileNames: string[] = fileEnts
    .filter(fileEnt => fileEnt.isFile())
    .map(fileEnt => fileEnt.name);

代码片段在 Typescript 中。