MyApp
├── main.js
└── modules
├── a.js
├── b.js
├── c.js
├── d.js
├── e.js
在我的NodeJS应用程序中,如何一次导入main.js文件中的所有自定义模块(a,b,c,d,e)?
我有很长的模块列表,我不想单独导入它们。
答案 0 :(得分:2)
您可以动态导入每个模块。
const fs = require('fs');
fs
.readdirSync(`${__dirname}/modules`)
.filter(file => (file.slice(-3) === '.js'))
.forEach((file) => {
require(`./modules/${file}`)
});

答案 1 :(得分: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
或者,您可以遍历目录并动态导入每个模块。
答案 2 :(得分: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)));
答案 3 :(得分: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小贴士:如果你想在多个地方要求()同一个目录,你可以在目录本身中执行此操作!只需使用以下命令创建index.js文件:
module.exports = require('require-dir')(); // defaults to '.'
您想在模块中使用包的位置:
var mds = require('./modules');
// mds.a(params) .....