Всем доброго времени суток.
Пишу небольшое 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;
}
На выходе мне нужно получить пути ко всем роутерам, либо "склеить" все файлы роутеров в один и отдать массив на выходе.
Как подобное можно реализовать?