我正在使用节点8.10.0。
fs.readdir()
返回文件名和子目录名称或 fs.Dirents[]
的数组。
我无法解决这个问题。这是一个简单的示例:
console.log(require("fs").readdirSync("/", {withFileTypes:true}));
这给了我一个字符串数组(例如["bin", "mnt", "usr", "var", ...]
),而不是一个fs.Dirent
对象数组(这就是我想要的)。
如何使它工作?
答案 0 :(得分:12)
v10.10.0中添加了必需的功能,您必须更新节点。
答案 1 :(得分:1)
我遇到了同样的问题,尽管我拥有最新的node.js(当前为v10.16),并且VS Code中的intellisense与online documentation是一致的,但是运行时的现实使我感到惊讶。但这是因为该代码由node.js v10.2(在VS Code扩展内部)执行。
因此,在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中。