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

在我的NodeJS应用程序中,如何一次导入main.js文件中的所有自定义模块(a,b,c,d,e)?

我有很长的模块列表,我不想单独导入它们。

===============>>#1 票数:2

您可以动态导入每个模块。

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

===============>>#2 票数:1

modules/文件夹中创建index.js

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

或者,您可以遍历目录并动态导入每个模块。

===============>>#3 票数: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)));

===============>>#4 票数: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提示:如果你想在多个地方要求()同一个目录,你可以在目录本身中执行此操作! 只需使用以下内容创建index.js文件:

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

您想在模块中使用包的位置:

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

  ask by Aditya translate from so

未解决问题?本站智能推荐: