NodeJS-TypeError:无法读取未定义的属性“名称”

时间:2018-11-26 01:57:36

标签: node.js discord.js

我从我的代码中收到以下错误:如果您可以帮助我,那就太好了!我正在使用discord.js!


  

TypeError:无法在读取未定义的属性“名称”   files.forEach.file(/root/eternity-bot/eternity-bot/index.js:21:33)位于   Array.forEach()位于fs.readdir   (/root/eternity-bot/eternity-bot/index.js:18:9)在   FSReqWrap.oncomplete(fs.js:135:15)


fs.readdir("./commands/", (err, files) => {
  if (err) return console.error(err);
  files.forEach(file => {
    if (!file.endsWith(".js")) return;
    let props = require(`./commands/${file}`);
    console.log(`Loading Command: ${props.help.name}.`);
    bot.commands.set(props.help.name, props);
    props.conf.aliases.forEach(alias => {
      bot.aliases.set(alias, props.help.name);
    })
  });
});

2 个答案:

答案 0 :(得分:2)

TypeError::当传递给函数的操作数或参数与该运算符或函数期望的类型不兼容时,将引发TypeError

可能的原因是您的props未正确加载并且不包含任何属性help,因此访问未知属性name的属性help会引发TypeError。类似于以下内容:

let obj = {
    o1: {
        a: 'abc'
    }
};

obj.o1     // gives {a: 'abc'}, as o1 is property obj which is an object.
obj.o1.a   // gives 'abc', as a is property of o1, which is property of obj.
obj.o2     // undefined, as there's no o2 property in obj.
obj.o2.a   // TypeError as there's no o2 property of obj and thus accessing property a of undefined gives error. 

答案 1 :(得分:1)

正在发生的事情是代码运行得很好,但是在命令文件夹中导出javascript文件时似乎出现了一些问题。很可能在文件中未定义help属性。