エラーメッセージまとめ
(node:*) 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: *)
この上にエラーがあるので、それを見てください
ReferenceError: AbortController is not defined
SyntaxError: Unexpected token '?' at node_modules/discord.js/src/rest/RESTManager.js:32
Error: Cannot find module 'node:events'
Discord.js v13 を Node.js v16.6 以前で使用した場合に発生するエラー
Node.js を v16.6 以上に更新してください
TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
トークンが間違っている
Error: Cannot find module '...'
... の部分に書いてあるライブラリを使っているがインストールしていない
TypeError: Cannot read property 'foo' of undefined
TypeError: Cannot read properties of undefined (reading 'foo')
undefined へのプロパティアクセスをしようとしてるエラー
プロパティ名が間違ってるか、データが正しく取得できてない可能性がある
'foo' の部分が該当箇所のプロパティ名なので、bar.foo の場合 bar が undefined だということになる
DiscordAPIError: Missing Access
Botがそこにアクセスできない
たとえば自分がアクセスできないメッセージに対してfetchしたり、自分がいないサーバーに対してfetchすることなどで起きる
DiscordAPIError: Missing Permissions
ボットに権限が足りない
チャンネルの作成、役職の付与とかの権限は初期設定ではついてないので権限を与える必要がある
DiscordAPIError: Two factor is required for this operation
導入されたサーバーで「管理の二要素認証」が設定されていた場合に、ボットの所有者が二要素認証を有効にしていないと一部の操作ができない(キック、BAN、メッセージ削除など)
DiscordAPIError: Cannot send messages to this user
ユーザーIDが誤っている、送信相手と同じサーバーにいない、相手のDM設定が許可しない設定になっている、ブロックされているなどでDMが送信できない
それから自分自身を含むボットにもDMを送信することはできない
DiscordAPIError: Invalid Form Body
components[x].components[y].custom_id: Component custom id was already specified
x,yの位置ですでに同じメッセージ内で使用されているcustom_idが使用されている
Cannot send an empty message
空のメッセージは送信できない
v13からは埋め込みの投稿を({ embed:ほにゃらら })から({ embeds:[ほにゃらら] }) にする必要がある MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 message listeners added. Use emitter.setMaxListeners() to increase limit
client.on('messageCreate', ...) などが多すぎる
EventEmitterのListenerの数の上限はデフォルトで10
TypeError: client.channels.get is not a function
TypeError: message.guild.members.get is not a function
TypeError: message.channel.messages.get is not a function
TypeError: client.users.get is not a function
Discord.js v14、v13、v12 では XXXs.get や XXXs.has のようなメソッドは XXXs.cache.get のように cache を挟む形で呼び出す
SyntaxError: await is only valid in async function
SyntaxError: await is only valid in async functions and the top level bodies of modules
SyntaxError: await is only valid in async functions
await は async 関数内でしか使うことが出来ない
Error: Cannot find module '\node_modules\@discordjs\opus\prebuild\node-v83-napi-v3-win32-ia32-unknown-unknown\opus.node'
@discordjs/opus は 64-bit 環境にしか事前ビルドを提供していなくて自前ビルドになる
更に何かしらの要因でビルドが失敗する読み込めなくてエラーが発生する
パスに日本語を含むとか
TypeError: fields.flat is not a function
Discord.js v12 以降を Node.js v10 以前で実行したときに発生する
正確な発生条件はフィールドがある埋め込みを含むメッセージを受信した場合か、自分で作成した場合
Discord.js v12 からは Node.js v12 以降を要求しているので更新する
Discord.js v13からは Node.js v16以降が必要