1. ホーム
  2. javascript

[解決済み] なぜ、ReferenceErrorが発生するのでしょうか?Discord.js v13 で AbortController が定義されていないのですが?

2022-02-25 21:21:55

質問

本日(2021.8.7)より Discord.js v13 がリリースされました。そこで、以前使っていた Discord.js でインストールされます。

npm i discord.js@latest

を、私の基本的な index.js ファイルをこの状態にします(私は Discord.jsガイド ):

const { Client, Intents } = require("discord.js");

const client = new Client({
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES],
});

client.once("ready", () => {
  console.log("Ready!");
});

client.login("my-token");

しかし、私のコードを実行しようとすると、このエラーが出続けます。

$ node .

(node:11216) UnhandledPromiseRejectionWarning。ReferenceError: AbortController は定義されていません

at RequestHandler.execute (C:\) パス先 \node_modules_discord.js)

私は、これまで Discord.js 2018年から、それゆえ、私は新しいリリースで困っていることに愕然としました。 の問題なのでしょうか? Discord.js v13 ライブラリですか?そうでない場合、どうすればこのエラーを修正できますか?

解決方法は?

問題点

の1つです。 前提条件 Discord.js v13を使用するには、NodeJS v16.6以降を使用する必要があります(強調)。

v13 は Node 16.6 以上が必要です。 を使用するため、最新版であることを確認してください。 を更新してください。Nodeのバージョンを確認するには、node -vを使用してください。


修正について

修正方法は、ノードのバージョンを更新することです。 node -v . また さまざまな方法 Linux / iOS をお使いの場合、以下のコマンドを実行することも一つの方法です。

> npm install -g n
> n latest

最初のコマンドは、コマンドラインインターフェイスをインストールします n を使用し、次に n を実行して、最新の安定版ノードに更新します。Windowsをお使いの場合は、次のようにインストールします。 NVM で説明したように この回答 によって プラーデク .

Herokuをご利用の方へのご注意 :

上記の手順で node のバージョンを更新したら、次に package.json ファイルにエンジンを追加・更新してください。

"engines": {
  "node": "16.x"
}


なぜv13で壊れたのでしょうか?

discordjsの数バージョン前に、時間がかかりすぎる(15秒以上)リクエストを中止させる機能が追加されました。この機能を実現するために、以前はノードパッケージの アポートコントローラー . しかし、nodejsが進化した現在では、独自の AbortController グローバルを使用することで、外部パッケージを要求する必要がありません。Discord.js v13では、このグローバルに依存するようになりました。 abort controller パッケージを使用しなくなりました。 . を使用するために AbortController しかし、discord.jsガイドが推奨するように、使用する可能性のある他の機能のサポートを有効にするには、v16.6+を使用する必要があります。