Задать вопрос

Как победить ошибку «cannot read property of undefined»?

updates.use(async (context, next) => {
    if (context.is("message") && context.isOutbox || context.is('message') && context.senderType == "group") return;
    if (context.text) {
        console.log(chalk.yellow(`@id${context.senderId} ${ context.isChat ? "#" + context.chatId : "" }, text: ${ context.text.slice(0, 360) }`));
    }


    if (!chats[context.chatId]) {
        let months = new Date().getMonth()
        let days = new Date().getDate()
        let hour = new Date().getHours()
        let minute = new Date().getMinutes()
        let second = new Date().getSeconds()

        chats[context.chatId] = {
            reg: `${nols(days)}.${nols(months)}.${new Date().getFullYear()}, ${nols(hour)}:${nols(minute)}:${nols(second)}`,
            ownerid: 0,
            rules: 0,
            maxwarns: 3,
            jointext: 0,
            botname: "бот",
            users: {}
        }
}
   if (!chats[context.chatId].users[context.senderId]) {
    const [user_info] = await vk.api.users.get({ user_id: context.senderId });
    chats[context.chatId].users[context.senderId] = {
            rank: 0,
            warns: 0,
            autokick: 0,
            vkid: context.senderId,
            banned: 0,
            name: `${user_info.user_id}`, 
            muted: 0
        }
}

Ошибка:

Handle polling update error: TypeError: Cannot read property 'user_id' of undefined
  • Вопрос задан
  • 85667 просмотров
Подписаться 4 Простой 11 комментариев
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
console.log в отладке? да не, бред какой-то... Русским по белому же написано - не могу читать проперти у андефайнд.
Ответ написан
@KnightForce
Какая-то переменная / поле / аргумент имеет значение undefined - вместо ожидаемого.
Вы берете у него еще что-то и получаете ошибку.
Например:
chats[context.chatId].users[context.senderId]

Если chats[context.chatId] undefined, то у него нет никакого users.
Ответ написан
Комментировать
@mSnus
Cannot read property 'user_id' of undefined


user_id - это у вас поле объекта user_info:
name: `${user_info.user_id}`,

а сам объект заполняется строкой выше:
const [user_info] = await vk.api.users.get({ user_id: context.senderId });


Видимо, в ответе пришёл пустой объект, а вы пытаетесь прочитать его свойство user_id, которое не существует. Поэтому и ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы