你如何动态地 module.export 一个文件夹中的所有文件?

王兹

我正在尝试动态导出模块。我很接近但无法弄清楚如何修复我的语法。

硬编码:

// index.js inside folder 'models'
const { User } = require('./User');
const { Token } = require('./Token');
const { Session } = require('./Session');

module.exports = {
    User,
    Token,
    Session,
};

动态编码(不起作用):

// index.js inside folder 'models'
const fs = require('fs');
const path = require('path');

module.exports = () => {
    fs.readdirSync(__dirname).forEach((file) => {
        if (file === 'index.js') return false;
        const fullName = path.join(__dirname, file);
        
        if (file.toLowerCase().indexOf('.js')) {
            // I think this somehow needs to be destructured like 
            // `return {require(fullName)}` or 
            // `require(fullName)[fullName]` I think
            require(fullName);
        }
    });
};

在我的代码的其他地方,我根据文件夹名称对其进行初始化:

// server.js
require('./models')();
紫色

您的动态导出将不起作用,因为您没有向导出的函数返回任何内容。

试试这个代码作为你的动态模型导出文件

// index.js inside folder 'models'
const fs = require('fs')
const path = require('path')

const models = {}

fs.readdirSync(__dirname)
  .filter(file => file !== 'index.js')
  .forEach(file => {
    const fullName = path.join(__dirname, file)

    if (file.toLowerCase().endsWith('.js')) {
      // Removes '.js' from the property name in 'models' object
      const [filename] = file.split('.')
      models[filename] = require(fullName)[filename]
    }
  })

module.exports = models

此方法不再导出函数,因此您的 requireserver.js现在应如下所示

// server.js
require('./models');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除Android上一个文件夹中的所有文件和文件夹

如何用一个文件替换一个文件夹中的所有文件?

如何在一个Google云端硬盘文件夹中访问所有文件?

如何将所有同级文件夹移动到一个文件夹中?

如何删除一个文件夹,但将所有子文件夹和文件保留在一个git分支中?

如何将一个文件夹中的所有文件复制到另一个文件夹并更改扩展名?

如何列出一个文件夹中某处出现的所有文件,而不是另一个文件夹?

如何将分散在文件系统中的所有同名文件移动到一个文件夹中?

如何用一些简短的方法将所有文件和文件夹从一个文件夹移到php中S3存储桶的另一个文件夹?

Flutter 如何从一个列表中的资产文件夹中获取所有文件

如何将所有文件(文件夹中每个子文件夹中的最新文件除外)压缩到每个子文件夹一个ZIP文件中?

如何从所有子文件夹中取出文件并将其移至第一个文件夹

如何使用 babel-loader 将 node_module 中的一个特定文件/文件夹从 es6 转换为 es5?

如何在文件夹中的所有(关闭)Excel文件上运行一个VBA宏?

如何将所有图像文件随机排列在一个文件夹中?

如何使用Java从一个文件夹中获取所有文本文件?

如何使用makefile独立编译和更新一个文件夹中的所有文件

如何将一个文件复制到所有子文件夹

如果文件与另一个文件夹匹配,如何从一个文件夹返回所有文件名?

天蓝色数据工厂:如何将一个文件夹中的所有文件合并为一个文件

如何最高效地将多个文件夹中的所有文件提取/重定位到一个文件中?

如何在vscode中排除除一个文件夹以外的所有文件夹?

如何更改文件夹中的所有图像并将更改的图像保存到另一个文件夹?

如何创建一个批处理,在本地网络上的所有(未知)共享文件夹中搜索特定文件夹?

我有一个脚本,可以对 .xlsx 文件进行一些操作。如何使用文件夹中的所有文件循环它?

在VSS 2005中,如何在另一个项目下移动一个项目(以及所有关联的文件夹和文件)?

Ruby:如何用一个命令运行文件夹中的所有单元测试?

如何使用玩笑模式匹配在一个文件夹中调用所有测试?

在C ++中,如何动态地从文件中创建一个类的多个对象?