所以今天我尝试读取所有默认导出 来自某个包含 index.js 的目录。尝试将其包装在一个对象内,然后再次将其导出。有没有更好的方法来处理这个问题?
export default (() => require('fs')
.readdirSync(__dirname)
.filter(fileName => !!/.js$/ig.test(fileName))
.map(fileName => fileName.split('.')[0])
.reduce((defaultExportObj, nextFileName) => {
try {
return {
...defaultExportObj,
[nextFileName]: require(__dirname + `/${nextFileName}`),
};
}catch(err) { throw err; }
}, {}))();
最佳答案
我想我会做这样的事情 - 不确定这是否更好 - 更好的是 ^^
webpack: require.context
function expDefault(path, mode = "sync"){
const modules = {}
const context = require.context(path, false, /\.js$/, mode)
context.keys().forEach(file => {
const name = fileName.replace(/^.+\/([^/]+)\.js$/, "$1")
modules[name] = context(name).default
})
return modules
}
export default expDefault(__dirname)
关于javascript - 通过读取 Node.js 中目录中的所有文件来动态导出模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457014/