0

我正在为我的 discord.js 机器人制作一个命令处理程序。但是机器人找不到“命令”文件夹。

行代码我有问题:

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

文件夹

错误信息 :

未捕获的错误:ENOENT:没有这样的文件或目录,scandir './commands'

问题是什么,解决方案是什么?

4

1 回答 1

2

尝试用重音包裹 ./commands:

`./commands`

而不是 './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');
于 2021-03-23T06:17:49.270 回答