我想从一个文件夹中导入所有命令文件并在 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
”常量中。
- 现在一切都已完成,您可以编写代码了。
如果您有任何其他与此代码相关的问题,请随时在评论中问我。
在我的公会命令文件中,我必须要求命令文件夹中的所有文件并将它们保存为 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
”常量中。 - 现在一切都已完成,您可以编写代码了。
如果您有任何其他与此代码相关的问题,请随时在评论中问我。