squadbrodyaga
@squadbrodyaga
帆は風を変えた

Можно ли с помощью require подключить сразу все файлы из папки?

Здравствуйте, можно ли с помощью require() или какого нибудь другого метода
подключить сразу все файлы из одной папки?

Мне это нужно чтобы сразу подключить все роуты разом. Сейчас я делаю это так:
app.use([
  require('./routes/home'),
  require('./routes/auth'),
  require('./routes/about'),
  require('./routes/premium'),
])

А можно ли это делать как-то так? Или придётся писать все require в ручную?
app.use([
  require('./routes'),
])
  • Вопрос задан
  • 128 просмотров
Решения вопроса 3
Alexandre888
@Alexandre888
Javascript-разработчик
перебирайте все файлы в папке, после чего записывайте их пути в массив.
let arr = [];
let files = fs.readdirSync(папка);
for (let key in files) {
 // ваш код //
}
app.use(arr)
Ответ написан
VlasenkoFedor
@VlasenkoFedor
Программист: php, js, go
fastify с живого проекта

const routes = require("./routes/index")
routes.forEach(route => app.route(route));


authRoutes.js, userRoutes.js ...
/routes/index.js
'use strict';

const fs = require('fs');
const path = require('path');
const basename = path.basename(__filename);
const routes = [];

fs
    .readdirSync(__dirname)
    .filter(file => {
        return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-9) === 'Routes.js');
    })
    .forEach(file => {
        routes.push(...require(path.join(__dirname, file)));
    });
module.exports = routes;
Ответ написан
squadbrodyaga
@squadbrodyaga Автор вопроса
帆は風を変えた
На основе ответов выше сделал вот так:
const fs = require('fs');
fs.readdirSync('routes').forEach(rout => {
  app.use(require('./routes/' + rout))
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы