javascript 使用es6导入并执行文件夹中的所有文件

c3frrgcw  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(285)

我正在将一些节点ES5节点代码迁移到Typescript。我需要移植这两段代码,在其中我迭代目录中的所有文件,并调用这些文件正在导出的默认函数。我如何在Typescript或ES6中完成此操作?
models/index.js

const fs = require("fs");

module.exports = () =>
  fs.readdirSync(__dirname).map((model) => {
    if (model === "index.js") return;
    return require("./" + model);
  });

index.js

const modelDefiners = require("./models")();

for (const modelDefiner of modelDefiners) {
  if (typeof modelDefiner === "function") {
    modelDefiner();
  }
}
gt0wga4j

gt0wga4j1#

您可以使用动态导入执行此操作:

import { promises as fs } from 'fs';
import { join } from 'path';

export default async function*() {
  for (const model of await fs.readdir(__dirname)) {
    if (model === "index.js") continue;
    yield await import(join(__dirname, model));
  }
}
import modelDefiners from "./models";

(async () => {
  for await (const {default: modelDefiner} of modelDefiners()) {
    if (typeof modelDefiner === "function") {
      modelDefiner();
    }
  }
})();

相关问题