NodeJS рекурсивно читает файлы из каталога / subdirs - PullRequest
0 голосов
/ 30 апреля 2019

Я борюсь с чем-то в NodeJS. То, что я пытаюсь сделать, это просто прочитать каталог и подкаталоги для файлов. Как бы легко это ни звучало, я застрял ... Я попробовал решение, которое нашел здесь, на SO в другом потоке, но, похоже, он не читает файлы из подкаталогов, а только первый каталог, к которому он обращается. Смысл этой функции ниже состоял в том, чтобы загрузить все контроллеры из данного каталога.

let walk = function(dir) {

    let results = [];
    let items = fs.readdirSync(dir);

    items.forEach(function(item) {

        let currentItem = path.join(dir, item);
        let stat = fs.lstatSync(currentItem);

        if (stat && stat.isDirectory()) {

            let dirName = path.parse(currentItem).name;
            results[dirName] = results.concat(walk(currentItem));

        } else {

            let fileName = path.parse(currentItem).name;
            results[fileName] = currentItem;

        }

    });

    return results;

};

const Controller = walk('app/Http/Controllers');

Лог выглядит так

[ Auth: [],
  Controller: 'app\\Http\\Controllers\\Controller.js',
  HomeController: 'app\\Http\\Controllers\\HomeController.js'
]

Проблема в том, что папка Auth читается, а не файлы в ней. Что я делаю не так?

1 Ответ

1 голос
/ 30 апреля 2019

Вы хотите, чтобы results был объектом или картой, а не массивом.

let results = {};

Массив используется для перечисления элементов, но в этом случае вы хотите отобразитьимя файла в файл.Объект похож на карту, но ключи всегда должны быть строками (как здесь).

...