-
Notifications
You must be signed in to change notification settings - Fork 0
/
features.js
44 lines (35 loc) · 1.7 KB
/
features.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const fs = require('fs');
const errorCatcher = require('./middlewares/ErrorCatcher');
// подключаем логгер Features
const Logger = require('log-my-ass');
const log = new Logger(API_CONFIG.logger, 'Features');
// Функция для безопасной загрузки файла
// может, в ней пока нет необходимости? загружается только один файл
function safeRequire(featureName, path) {
let require_return_value;
// Пытаемся загрузить файл
try {
require_return_value = require(path);
log.info('Загружен ' + featureName + '!');
// Возможно есть способ обойтись без этого, но я не уверен
// просто молчим
} catch (err) {}
return require_return_value;
}
log.info('Начало загрузки...');
const origin_path = './features/';
module.exports = function (app) {
// Получаем содержимое папки features
fs.readdir(origin_path, { withFileTypes: true }, (err, contents) => {
if (err) return log.info('Ошибка при загрузке!');
contents.forEach((matchDirent) => {
// Подгружаем только папки
if (!matchDirent.isDirectory()) return;
const curr_path = origin_path + matchDirent.name + '/';
safeRequire(matchDirent.name, curr_path + 'index')(app);
});
// После загрузки всех маршрутов необходимо подключить обработчик ошибок
// Примечательно, что это НЕОБХОДИМО делать в последнюю очередь
app.use(errorCatcher);
});
};