首页 > 解决方案 > 无法读取未定义的属性“名称”,我需要一些帮助

问题描述


const fs = require('fs');

function loadCommands(client) {
    fs.readdir('commands/', (err, files) => {        

        if (err) console.log(err);
    
        const jsfile = files.filter(f => f.split('.').pop() === 'js');
        if (jsfile.length <= 0) {
            return console.log('Bot Couldn\'t Find Commands in commands Folder.');
        }
    
        jsfile.forEach((f, i) => {
            const pull = require(`../commands/${f}`);
            client.commands.set(pull.config.name, pull);
            pull.config.aliases.forEach(alias => {
                bot.aliases.set(alias, pull.config.name);
            });
        });
    });
}

module.exports = {
    loadCommands
}

我不知道为什么它在这里的错误看起来很棒的代码......

错误在client.commands.set(pull.config.name, pull); bot.aliases.set(alias, pull.config.name); 显示未定义。

我需要一些帮助,我正在尝试为我的机器人制作一个自定义前缀,我真的需要这个代码!

代码中的错误

标签: javascriptnode.jsdiscorddiscord.jsbots

解决方案


其中一个文件../commands/whateverFile.js不导出config,或者导出config但没有.name在其上放置属性。您没有向我们展示任何这些文件,因此很难猜测问题所在。

你可以试试这个来找出哪个文件是坏的。

        jsfile.forEach((f, i) => {
            const pull = require(`../commands/${f}`);
            if (!pull || !pull.config || !pull.config.name) {
                throw new Error (`bogus require file ${f}`)
            }
            client.commands.set(pull.config.name, pull);
            pull.config.aliases.forEach(alias => {
                bot.aliases.set(alias, pull.config.name);
            });
        });

推荐阅读