UnhandledPromiseRejectionWarning: ошибка типа: не удается прочитать свойство ‘MessageEmbed’ неопределенного

#node.js #discord #discord.js

#node.js #Discord #discord.js

Вопрос:

этот следующий код раньше работал, но по какой-то причине он больше не работает, я понятия не имею, почему за этим кодом следует сообщение об ошибке

 module.exports = {
    name:  'stats',
    description: "This list shows the stats of the lol players",
    execute(message, args, Discord) {
       const newEmbed = new Discord.MessageEmbed()
       .setColor('#304281')
       .setTitle('League of Legends Stats')

       .setDescription('This is a list that shows you who has their stats coded into the bot, just copy and paste the command :)')
       .addFields({name: 'X', value: 'Y'},)
       .setImage('https://candid.technology/wp-content/uploads/2019/10/League-of-Legends-Wallpaper-5.jpg')
       .setFooter('if the stats seem wrong just click on update :)');

       message.channel.send(newEmbed)
    }
}
 
 (node:2540) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'MessageEmbed' of undefined
    at Object.execute (C:UsersA_AlADesktopAegir2commandsstats.js:5:37)
    at Client.<anonymous> (C:UsersA_AlADesktopAegir2main.js:138:42)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientactionsMessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsockethandlersMESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:UsersA_AlADesktopAegir2node_modulesdiscord.jssrcclientwebsocketWebSocketShard.js:301:10)
    at WebSocket.onMessage (C:UsersA_AlADesktopAegir2node_moduleswslibevent-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
(node:2540) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)

 

Комментарии:

1. Как вы вызываете execute() ? Можете ли вы добавить его в свой вопрос?

Ответ №1:

Есть две причины, о которых я могу подумать, почему это может работать не так, как вы ожидали. Я предполагаю, что верно следующее:

  • Код находится в отдельном файле, но функция execute вызывается в файле с именем «main.js «
  • Предоставленный код является единственным кодом в файле

Discord не передается в функции должным образом

Когда вы вызываете функцию «выполнить» для события сообщения в main.js файл, скорее всего, вы передаете не все три переменные. Это приведет к тому, что Discord также не будет передан, поэтому в index.js файл, вот как должна выглядеть ваша функция выполнения

 execute(message, args, Discord)
 

Это предоставит вашему коду надлежащие переменные для работы. Однако обратите внимание, что вам также потребуется обновить свой код в команде до того же самого, чтобы все переменные были переданы и получены правильно

Discord не определен

Судя по ошибке, я считаю, что это наиболее вероятная из двух моих причин. Я настоятельно рекомендую делать это, даже если это не ошибка, потому что это хорошая практика, если вы добавляете больше пакетов.

В моих предположениях я предполагаю, что вы не определяете Discord в верхней части кода. Следовательно, Discord не определен, и MessageEmbed не создается, потому что он не может получить пакет Discord. Добавьте это над modules.export

 const { Discord } = require("discord.js");
 

Помните, как только вы это сделаете, вам не нужно переопределять клиента. Вы уже передали его в качестве аргумента в execute()

Комментарии:

1. Спасибо, чувак, это был диссонанс, который не был передан в функцию

2. Пожалуйста! Не забудьте поставить галочку, чтобы показать другим, что этот ответ вам помог