类型错误:无法读取执行的属性

时间:2021-07-04 13:08:02

标签: node.js discord discord.js

我不明白为什么会发生这种情况,因为通常控制台中的执行错误是因为文件名与 module.exports 名称不同,但在这种情况下,我真的不知道是什么导致了这个错误(顺便说一句,我删除了选择):

module.exports.run = {
    name: 'scavenge',
    aliases: ['scv', 'scav'],
    description: 'go scavenge for coins',
    async execute(message, args, cmd, client, Discord, profileData){
        const choices = [];
        const choice = choices[Math.floor(Math.random() * choices.length)];
        const randomNumber = Math.floor(Math.random() * 1000) + 1;
        const response = await profileModel.findOneAndUpdate({
            userID: message.author.id,
        }, {
            $inc: {
                Bobux: randomNumber,
            }
        }
        );
        return message.channel.send(`You searched in **${choice}** and found **${randomNumber} Bobux**`);
    }
}

Console:

TypeError: Cannot read property 'execute' of undefined

3 个答案:

答案 0 :(得分:1)

它应该是 module.exports = 而不是 module.exports.run =

module.exports = {
    name: 'scavenge',
    aliases: ['scv', 'scav'],
    description: 'go scavenge for coins',
    async execute(message, args, cmd, client, Discord, profileData){
        // ...
    }
}

答案 1 :(得分:0)

您面临的问题是复制和粘贴代码(最有可能),这主要是由于您没有完全理解代码造成的。

当您使用 commandfile.execute 时,您不能使用 module.exports.run

因此,您必须替换:

module.exports.run = {

与:

module.exports.execute = {

在导出 .run 时,您的 index.js 文件需要 .execute!

如果您需要更多帮助,请发表评论。

答案 2 :(得分:0)

看到您将命令文件导出为 javascript object,而您的错误意味着 execute 属性在命令文件对象中不存在。它应该是module.exports =而不是module.exports.run =,所以修复是

module.exports = {
    name: 'scavenge',
    aliases: ['scv', 'scav'],
    description: 'go scavenge for coins',
    execute: async (message, args, cmd, client, Discord, profileData) => { // defining execute property
        // do your command code here
    }
}