Require 不是函数 discord.js

时间:2021-04-08 23:38:27

标签: javascript node.js discord discord.js

我正在编写一个事件处理程序(由 Codelyon),但我遇到了一个新错误。在这里

C:\Users\shann\Desktop\DiscordBot\main.js:10
    require(`./handlers/${handler}`)(client, Discord);
                                    ^

TypeError: require(...) is not a function
    at C:\Users\shann\Desktop\DiscordBot\main.js:10:37
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (C:\Users\shann\Desktop\DiscordBot\main.js:9:37)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47

我的主要编码在这里。 (main.js)

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

client.commands = new Discord.Collection();
client.events = new Discord.Collection();

['command_handler','event_handler'].forEach(handler =>{
    require(`./handlers/${handler}`)(client, Discord);
});







client.login(process.env.DISCORD_TOKEN);


我拥有所有必要的软件包(以及其他软件包,例如图像抓取工具)。 对于我的活动,我有消息并准备好了。 (Ready 会在我的机器人运行时告诉我,并且在说出命令时会感知消息)。我也有一些命令。告诉我你是否需要这些代码。 这是我的事件处理程序的编码:

const fs = require('fs');

module.exports = (client, Discord) =>{
    const load_dir = (dirs) =>{
        const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js'));

        for(const file of event_files){
            const event = require(`../events/${dirs}/${file}`);
            const event_name = file.split('.')[0];
            client.on(event_name, event.bind(null, Discord, client));

        }
    }

    ['client', 'guild'].forEach(e => load_dir(e));
}

这是我为我的命令处理程序编写的代码:

const fs = reqire('fs');

module.exports = (client, Discord) =>{
    const command_files = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))

    for(const file of command_files){
        const command = require(`../commands/${file}`)
        if(command.name){
            client.commands.set(command.name, command);
        } else {
            continue;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

对于任何想知道这个问题的人来说,这只是一个错字。我在 command_handler 中拼写错误。