簡體   English   中英

為什么我會收到 ReferenceError: AbortController is not defined in Discord.js v13?

[英]Why am I getting a ReferenceError: AbortController is not defined in Discord.js v13?

今天(7.8.2021) 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:11216) UnhandledPromiseRejectionWarning: ReferenceError: AbortController 未定義

在 RequestHandler.execute (C:\\ pathTo \\ node_modules \\discord.js\\src\\rest\\RequestHandler.js:172:15)

自 2018 年以來,我一直在使用Discord.js ,因此我很驚訝我在新版本中遇到了問題。 這是Discord.js v13庫的問題嗎? 如果不是,我該如何修復錯誤?

問題:

使用 Discord.js v13 的先決條件之一是您需要使用 NodeJS v16.6 或更高版本(重點是我的):

v13 需要使用 Node 16.6 或更高版本,因此請確保您是最新的。 要檢查您的節點版本,請使用 node -v


修復:

修復是更新您的節點版本,您可以通過運行node -v來確認您當前的節點版本。 多種不同的方式來更新節點,如果您使用的是 Linux / iOS,一種方式是運行以下命令:

> npm install -g n
> n latest

第一個命令安裝命令行界面n ,然后第二個命令使用n更新到最新的穩定版本的節點。 如果您使用的是 Windows,則可以按照pradeek 的此答案中所述安裝NVM

Heroku 用戶注意事項

按照上述步驟更新節點版本后,您可能需要通過添加/更新引擎來更新package.json文件:

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

為什么這在 v13 中崩潰了?:

在 discordjs 的幾個版本之前,添加了一項功能,可以中止耗時過長(超過 15 秒)的請求。 為了實現這個功能,他們之前使用了節點包abort-controller 然而,現在 nodejs 已經進化,它現在有了自己的AbortController全局,不需要外部包。 Discord.js v13 現在依賴於這個全局變量,因為它們不再使用 abort 控制器包 為了使用AbortController提供的AbortController全局,您需要使用 node v15 或更高版本 - 但是,根據 discord.js 指南的建議,您應該使用 v16.6+ 以啟用對它可能使用的其他功能的支持。

如果你不想在你的所有系統中安裝 node.js v16,而只是將它添加到你的機器人項目中,你可以這樣做:

npm install node@16.6.1 --save-exact

它會運行。

N,解決方案中使用的更新程序,不適用於 Windows 操作系統。 如果您使用 Windows,仍有一種方法可以更新。 轉到Node.JS 安裝網站

如果您在沒有單擊我提供的鏈接的情況下手動訪問,則需要從 LTS 選項切換到 Current。如這里所見

^ 如這里所見

選擇 MSI 安裝程序和舊 Node.JS 版本所安裝的架構。

如果您不知道舊 Node.JS 版本所安裝的架構,您可以通過檢查 nodejs 文件夾是否在“C:/Program Files”或“C:/Program Files (x86)”中來檢查

然后就像第一次一樣安裝 Node.JS。

享受!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM