Не могу получить массив fs.Dirent от fs.readdir - PullRequest
0 голосов
/ 07 сентября 2018

Я использую узел 8.10.0.

fs.readdir() возвращает массив имен файлов и имен дочерних каталогов, или fs.Dirents[].

Я не могу заставить это работать. Вот простой пример:

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

Это дает мне массив строк (например, ["bin", "mnt", "usr", "var", ...]), а не массив fs.Dirent объектов (что я и хочу).

Как мне заставить это работать?

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Я столкнулся с той же проблемой, и, хотя у меня самый последний файл node.js (v10.16 в настоящее время) и intellisense в VS Code, соответствует онлайн-документации , реальность во время выполнения меня удивила , Но это потому, что код исполняется 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.

0 голосов
/ 07 сентября 2018

Требуемая функциональность добавлена ​​в: v10.10.0, вы должны обновить узел.

...