web-dev-qa-db-ja.com

discord.js MessageEmbed fields.flatは関数ではありません

JavaScriptとdiscord.jsを使用してDiscordボットを作成しています。そこで、RichEmbed/MessageEmbed(それがどのように呼び出されたかがわかりません)をチャネルに送信します。ただし、Embedを送信する代わりに、discord.js内でエラーをスローしました。

TypeError: fields.flat is not a function
    at Function.normalizeFields (D:\discord-bot\node_modules\discord.js\src\structures\MessageEmbed.js:436:8)
    at MessageEmbed.addFields (D:\discord-bot\node_modules\discord.js\src\structures\MessageEmbed.js:252:42)
    at commands.forEach.command (D:\discord-bot\src\js\core\commands\commandManager.js:55:19)
    at Array.forEach (<anonymous>)
    at helloWorldEmbed (D:\discord-bot\src\js\core\commands\commandManager.js:54:18)
    at Object.call (D:\discord-bot\src\js\core\commands\commandManager.js:29:13)
    at Client.client.on (D:\discord-bot\src\js\core\bot.js:16:49)
    at Client.emit (events.js:182:13)
    at MessageCreateAction.handle (D:\discord-bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (D:\discord-bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)

すでに回答を探していましたが、困っているのは私だけです。

これが私が使ったコードです:

const embed = new MessageEmbed()
    .setTitle('Hello World')
    .setDescription('This is a test.')
    .setColor('#3498db')
quotes.forEach(quote => {
    embed.addField(quote.name, quote.description, true)
})
message.channel.send('Hello world.', embed)
2
Darxoon

コメントで説明したように、Node.jsを更新すると問題が解決します。 Discord.js v12は、古いバージョンには存在しない効率のために使用するメソッド(エラーのArray#flat()など)のため、12.0.0以降が必要です。

1
slothiful