当我在discord bot中执行命令(输入普通消息时不会发生错误)时,我收到一条错误消息:
无法读取未定义的属性“活动”
当我尝试从存储用户数据的json文件中控制台记录对象时,就会发生这种情况。
这些是我的机器人的index.js文件的第一行代码,我尝试控制台日志的那一行是发生错误的地方
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require("fs");
const prefix = '>';
let xp = require("./storage/dbGeneral.json");
let pr = require("./storage/dbPremium.json");
let lv = require("./storage/levels.json");
client.on('message', message => {
console.log(pr[message.author.id].active);
}
这是我存储数据的json文件
{
"397387465024864257": {
"active": false,
"dateStart": "",
"dateEnd": ""
}
}
这是错误:
index.js:14
console.log(pr[message.author.id].active);
^
TypeError: Cannot read property 'active' of undefined
at Client.client.on.message (index.js:14:39)
at emitOne (events.js:116:13)
at Client.emit (events.js:211:7)
at MessageCreateHandler.handle (\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
at WebSocketPacketManager.handle (\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
at WebSocketConnection.onPacket (\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
at WebSocket.onMessage (\node_modules\ws\lib\event-target.js:120:16)
at emitOne (events.js:116:13)
at WebSocket.emit (events.js:211:7)
我真的不知道是什么原因导致的错误,所有其他json请求都可以使用相同的方法正常工作。
答案 0 :(得分:1)
该错误是由于尝试访问未定义内容的属性引起的。 要解决您的问题,必须检查用户是否存在于数据库中。
let user = pr[message.author.id];
if(user) console.log(user.active)