尝试在discord.js中生成第二个命令处理程序时出现目录错误

尝试在discord.js中生成第二个命令处理程序时出现目录错误,discord.js,Discord.js,我是个初学者,不知道发生了什么事。我很确定我只是把目录格式化错了。我创建了一个命令处理程序,在其中一个可执行文件中,我试图实现第二个命令处理程序。我复制了原件,并将其格式化为该目录。当我运行程序时,我得到以下信息:错误:enoint:没有这样的文件或目录,scandir./duels' const fs = require('fs'); const Discord = require('discord.js'); const config = require('../config.json');

我是个初学者,不知道发生了什么事。我很确定我只是把目录格式化错了。我创建了一个命令处理程序,在其中一个可执行文件中,我试图实现第二个命令处理程序。我复制了原件,并将其格式化为该目录。当我运行程序时,我得到以下信息:错误:enoint:没有这样的文件或目录,scandir./duels'

const fs = require('fs');
const Discord = require('discord.js');
const config = require('../config.json');
const client = new Discord.Client();

const { prefix, token } = require('../config.json');


client.duels = new Discord.Collection();

const duelFiles = fs.readdirSync('./duels').filter(file => file.endsWith('.js'))

for (const file of duelFiles) {
    const command = require(`./duels/${file}`);
    client.commands.set(duel.name,duel);
}

module.exports = {
    name: 'duel',
    description: 'fight your friends!',
        execute(message,args) {

            try{

                if (args[0].startsWith('<@')){
                    const opponent = args[0];
                    const attacker = message.author.username;
                    const duel = args[1];

                    if(!client.duels.has(duel)) {
                        message.reply(`bro that duel type doesn't exist \n\`please use this format: ${prefix}duel @person [duel type]\` \nfor a list of duels, type ${prefix}duelhelp`)
                        return;
                    }

                    try {
                        client.duels.get(duel).execute(message,args);
                    } catch (error) {
                          console.error(error);
                          message.reply(`bro that duel type doesn't exist`)
                    }

                } else {message.reply(`you gotta mention a person with @ \n\`please use this format: ${prefix}duel @person [duel type]\``)}

            } catch (error) {
                console.error(error);
                message.reply(`yeah ok, duel. what does that mean?? \n\`please use this format: ${prefix}duel @person [duel type]\``)
            }
        }
};
const fs=require('fs');
const Discord=require('Discord.js');
const config=require('../config.json');
const client=new Discord.client();
const{prefix,token}=require('../config.json');
client.duels=新建Discord.Collection();
const duelFiles=fs.readdirSync('./duels').filter(file=>file.endsWith('.js'))
for(双文件的常量文件){
const command=require(`./duels/${file}`);
client.commands.set(duel.name,duel);
}
module.exports={
名字:'决斗',
描述:“与你的朋友战斗!”,
执行(消息,参数){
试一试{

if(args[0]。startsWith('相对文件路径对node.js的不同部分的工作方式不同。
require
将相对于当前文件解释它们,即,哪个文件实际包含
require
语句。但文件i/o相对于当前工作目录(CWD)-这将是您执行程序的地方

考虑到这一点,您需要替换以下内容:

fs.readdirSync('./duels')
为此:

fs.readdirSync('./commands/duels')

对于node.js的不同部分,相对文件路径的工作方式不同。
require
将相对于当前文件解释它们,即哪个文件实际包含
require
语句。但是文件i/o相对于当前工作目录(CWD)-这将是执行程序的位置

考虑到这一点,您需要替换以下内容:

fs.readdirSync('./duels')
为此:

fs.readdirSync('./commands/duels')

你有一个单独的文件名为duels.js吗?这是我的文件系统你有一个单独的文件名为duels.js吗?这是我的文件系统@lemon,如回答中所述,
require
解释相对于包含
require
语句的文件的相对路径。看起来你将代码更改为read require(`./commands/duels/${file}`)当它仍然需要时(`./duels/${file}`)得到了它。我如何在嵌套文件夹中获取config.json?我不知道如何口述两个文件夹。@lemon使用
(两个点)进入一个文件夹,就像您在上面的代码片段中所做的那样。您可以多次这样做,例如
require('../../config.json')
非常感谢。@lemon如回答中所述,
require
解释相对于包含
require
语句的文件的相对路径。看起来您将代码更改为require(`./commands/duels/$${file}`),而它应该仍然是require(`./duels/${file}`)明白了。我如何在嵌套文件夹中获取config.json?我不知道如何口述两个文件夹。@lemon使用
(两个点)向上移动一个文件夹,就像您在上面的代码片段中所做的那样。您可以多次这样做,例如
需要('../.config.json')
非常感谢。