#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');