我想从一个文件夹中导入所有命令文件并在 ES6 中执行它们

I want to import all command files from a folder and execute them in ES6

在我的公会命令文件中,我必须要求命令文件夹中的所有文件并将它们保存为 FOR 循环中的变量。

在 ES5 中它看起来像这样:

for (const file of commandFiles) {
   const command = require(`../commands/${file}`);
   commands.push(command.data.toJSON());
}

但我想用 ES6 和导入语句导入所有内容。 有没有办法将上面的代码转换为兼容 ES6 的代码?

尝试这样的事情:

  for (const file of commandFiles) {
        const command = require(`./commands/${file}`);
        client.commands.set(command.name, command);
    }

Dynamic import() returns 一个承诺,这就是为什么你必须在它之前使用 await

如果模块导出为default,你应该使用const { default: command } = await import(x),如果你想使用const command,以后使用command.default而不是command在代码中。

for (const file of commandFiles) {
    const command = await import(`../commands/${file}`);
    commands.push(command.data.toJSON());
}

尝试使用FS || FileSystem:

const fs = require("fs"); // Import the FileSystem

fs.readdirSync(`../commands`).forEach(file => {
  const command = require(`../commands/${file}`); // Saving the imported file as a constant
  // Do something with the "command" constant
});

解释:

  • 首先我们导入FileSystem || FS.
  • 然后我们使用FS的“readdirSync()”函数获取“commands”目录下的所有文件。
  • 当我们从“commands”文件夹中获取所有文件名时,我们将每个文件名导入为“command”常量。
  • 现在“file”的所有内容都存储在“command”常量中。
  • 现在一切都已完成,您可以编写代码了。

如果您有任何其他与此代码相关的问题,请随时在评论中问我。