NodeJS. Вывод списка роутеров приложения функцией

203
11 ноября 2021, 02:00

Всем доброго времени суток.

Пишу небольшое MVC приложение на NodeJS и немного застрял с созданием роутера, а точнее с одной из функций данного класса.

Ближе к делу. Я хочу, чтобы моё приложение "сканировало" папку 'Modules' в которой будут содержатся различные модули приложения, к примеру модуль админ-панели, либо же сам фронтенд, который доступен пользователю.

На данный момент моя папка 'Modules' выглядит так:

Modules/Frontend Controller/... Model/... View/... router.json Modules/Backend Controller/... Model/... View/... router.json

Что мне необходимо реализовать?

Для начала я создал функцию, которая сканирует папку модулей и получает роутер каждой из папок, но проблема в следующем, функция записывает пути к каждому пути роутера, но когда возвращает мне результат стирает массив и мне приходит пустой массив. Это происходит из-за того, что в начале функции определен массив let list = [] - то есть пустой массив, без этого функция попросту не работает.

Вот весь код самой функции:

function Search(startPath){
        // Название файла роутера
        let filter = 'route.json';
        let list = [];
        // Проверка, если имя папки не задано, то присваиваем ей нужное имя
        if(startPath === undefined)
            startPath = 'Modules';
        // console.log(`Проверка директории: ${startPath}, файл не найден.`);
        // Проверка на ошибку, есть ли такая директория.
        if (!fs.existsSync(startPath)){
            console.log("Нет такой директории: ",startPath);
            return;
        }
        // Цикл поиска файла
        let files = fs.readdirSync(startPath);
        for(let i=0; i<files.length; i++) {
            let filename=path.join(startPath,files[i]);
            let stat = fs.lstatSync(filename);
            // Если файл не найден, то запускаем цикл повторно
            if (stat.isDirectory()) {
                this.Search(filename,filter);
            }
            // Если файл найден, кладем его в массив.
            else if (filename.indexOf(filter)>=0) {
                list = [filename];
            }
        }
        return list;
    }

На выходе мне нужно получить пути ко всем роутерам, либо "склеить" все файлы роутеров в один и отдать массив на выходе.

Как подобное можно реализовать?

READ ALSO
Как получить значения свойств объекта при помощи for in loop?

Как получить значения свойств объекта при помощи for in loop?

Есть функция, которая в результате выдает объект с датами

167
Удалить подстроку из строки

Удалить подстроку из строки

Как поправить код, чтобы удалялось https:// и http://, а не только https:// ?

180
Записываются данные только из одного инпута React js

Записываются данные только из одного инпута React js

После ввода данных в инпут , в стейт записывается значение "compiled" так же для title , те если вводить false то и в title оказывается false , хотя там вводилось...

120
Как удалить некоторые слова из текста?

Как удалить некоторые слова из текста?

Ребята, как удалить некоторые слова из текстаЕсть код:

157