discord.js:JSON 星球属性未定义

Posted

技术标签:

【中文标题】discord.js:JSON 星球属性未定义【英文标题】:discord.js: JSON planet property is undefined 【发布时间】:2018-12-09 02:16:57 【问题描述】:

我正在使用 discord.js 制作一个 Discord 机器人,并且我开始向其中添加 JSON 内容,以便我可以将单个用户的信息存储在一个单独的文件中。但是,在显示if (bot.log[mentionedGuyName].planet == undefined) 的行中,我不断收到错误消息planet is not defined。这里有一些变量、模块等没有被声明或其他什么,但这只是因为如果我把我所有的代码都放在这里,它会很长。我的 JSON 文件名为 log.json

此代码块的一般用途是查看用户是否已经拥有一个“星球”。如果是这样,机器人会从 JSON 文件中获取该值,并将其发送到通道。如果没有,那么它会随机选择一个(由于大小我没有放在这里的代码)

我想我至少了解错误发生的原因(行星属性未定义),但我不确定如何解决它。如果有人知道如何声明 JSON 属性或这里发生的任何事情,我和我的服务器将不胜感激。提前致谢!

这是我的 javascript 文件:

let mentionedGuy = message.mentions.members.first();
let mentionedGuyName = null;
let noMentions = message.mentions.members.first() == false || 
message.mentions.members.first() == undefined;
if (noMentions) return;
else mentionedGuyName = mentionedGuy.user.username;

if (message.content.startsWith(prefix + "planet")) 
    if (message.content.length > 7) 
        if (bot.log[mentionedGuyName].planet == undefined) 
            bot.log[mentionedGuyName] = 
                planet: jMoon
                
                fs.writeFile('./log.json', JSON.stringify(bot.log, null, 4), err => 
                    if (err) throw err;
                );
                message.channel.send(targeting);
                message.channel.send(coords);
         else 
            message.channel.send(bot.log[mentionedGuyName].planet);
        
    

【问题讨论】:

【参考方案1】:

更改它以检查 typeof

if(typeof <var> == 'undefined') //returns true if undefined

注意 typeof 返回一个字符串 Source

【讨论】:

谢谢,但它仍然给了我同样的错误。您对如何解决“行星未定义”有任何想法吗?

以上是关于discord.js:JSON 星球属性未定义的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义 discord.js 的属性“名称”尝试读取 json 中的数组

JavaScript、Discord.js、Node.js 类型错误:无法读取未定义的属性“执行”

Discord.js 的欢迎消息 - “无法读取未定义的属性 'get'”

Discord.js 无法读取未定义的属性“获取”

无法读取未定义的属性“发送”(Discord.js)

discord.js 成员计数 - 无法读取未定义的属性“通道”