Я пытаюсь изменить свой код, чтобы включить файлы в подкаталоги:
const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith(".js"));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
Я нашел решение, которое мне кажется немного абстрактным, когда я попытался его реализовать, у меня возникла ошибка, вот что я пробовал:
const { readdirSync, statSync } = require('fs');
const { join } = require('path');
const dirs = p => readdirSync(p).filter(f => statSync(join(p, f)).isDirectory())
const commandFiles = ('./commands');
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
Получила следующую ошибку:
Error: Cannot find module './commands/.'
Что я могу сделать, чтобы это работало?





Получил, чтобы работать с
const fs = require('fs');
const walk = function(dir) {
let results = [];
const list = fs.readdirSync(dir);
list.forEach(function(file) {
file = dir + '/' + file;
file_type = file.split(".").pop();
file_name = file.split(/(\\|/)/g).pop();
const stat = fs.statSync(file);
if (stat && stat.isDirectory()) {
results = results.concat(walk(file));
} else {
if (file_type == "js") results.push(file);
}
});
return results;
}
const commandFiles = walk('./commands');
for (const file of commandFiles) {
const command = require(`${file}`);
Просто используйте __dirname
const commandFiles = fs.readdirSync(__dirname+'/commands').filter(file => file.endsWith('.js'));