Почему мой бот-ди-джей не может найти мою папку команд?

#node.js #discord.js #fs #enoent

Вопрос:

Я создаю обработчик команд для своего discord.js бот. Но бот не может найти папку «команды».

Код строки, с которым у меня возникли проблемы:

 const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
 

Папки

Сообщение об ошибке :

Неперехваченная ошибка: ENOENT: нет такого файла или каталога, scandir ‘./команды’

В чем проблема и каково ее решение?

Комментарии:

1. Где находится файл, который вы импортируете в ./commands директорию?

Ответ №1:

Попробуйте обернуть команды ./с серьезными акцентами:

 `./commands`
 

вместо». /команды» или добавьте «/» в конец, иногда помогает.

Если вы хотите, чтобы обработчик рекурсивно искал все ваши файлы команд, например, вы создали подкаталоги для организации своих команд, вы можете использовать функцию, которую я использую (и рекомендую):

 const fs = require('fs');
const path = require('path');
const rootDir = path.dirname(require.main.filename);
const fileArray = [];

const readCommands = (dir) => {

    const __dirname = rootDir;

    // Read out all command files
    const files = fs.readdirSync(path.join(__dirname, dir));

    // Loop through all the files in ./commands
    for (const file of files) {
        // Get the status of 'file' (is it a file or directory?)
        const stat = fs.lstatSync(path.join(__dirname, dir, file));

        // If the 'file' is a directory, call the 'readCommands' function
        // again with the path of the subdirectory
        if (stat.isDirectory()) {
            readCommands(path.join(dir, file));
        }
        else {
            const fileDir = dir.replace('\', '/');
            fileArray.push(fileDir   '/'   file);
        }
    }
};


readCommands('commands');