Импортировать все модули из каталога одновременно [NODE]

1
MyApp
├── main.js
└── modules
    ├── a.js
    ├── b.js
    ├── c.js
    ├── d.js
    ├── e.js

В моем приложении NodeJS, как я могу импортировать все мои собственные модули (a, b, c, d, e) в мой файл main.js сразу?

У меня длинный список модулей, и я не хочу импортировать их отдельно.

Теги:

4 ответа

1

Вы можете динамически импортировать каждый модуль.

const fs = require('fs');

fs
  .readdirSync('${__dirname}/modules')
  .filter(file => (file.slice(-3) === '.js'))
  .forEach((file) => {
    require('./modules/${file}')
  });
1

Создайте index.js в modules/ папке:

const a = require('./a')
const b = require('./b')
const c = require('./c')
const d = require('./d')
const e = require('./e')

module.exports = {
  a,
  b,
  c,
  d,
  e
}

Затем просто импортируйте модуль в main.js:

const modules = require('./modules')
modules.a

В качестве альтернативы вы можете прокручивать каталог и динамически импортировать каждый модуль.

0
const path = require('path');
const fs = require('fs');

const modulesPath = './modules';
const modulesList = fs.readdirSync(modulesPath);
modulesList.forEach(modulePath => require(path.resolve(modulesPath, modulePath)));
0

Вы можете использовать ручной способ импорта всех модулей в каталог

var allModules = {};
require('fs').readdirSync(__dirname + '/modules/').forEach(function(file) {
  if (file.match(/\.js$/) !== null && file !== 'index.js') {
    var name = file.replace('.js', '');
    allModules[name] = require('./modules/' + file);
  }
});
// allModules.a(params)

или вы можете использовать эту библиотеку для этого случая require-dir

var requireDir = require('require-dir');
var modulesPackage = requireDir('./modules');
// modulesPackage contains 
//{
//  a: require("./modules/a"),
//  b: require("./modules/b")
//}

Перейти к началу страницы Перейти к началу страницы | Отправить отзыв Решение. Lib hava a tip: Если вы хотите потребовать() один и тот же каталог в нескольких местах, вы можете сделать это в самой директории! Просто создайте файл index.js со следующим:

module.exports = require('require-dir')();   // defaults to '.'

Где вы хотите использовать пакет в модулях:

var mds = require('./modules');
// mds.a(params) .....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню