Hoy (7.8.2021) se ha lanzado Discord.js v13 . Así que actualicé mi instalación anterior de Discord.js con
npm i discord.js@latest
y luego adapté mi archivo index.js básico a este estado (seguí la Guía de 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");Sin embargo, cuando intento ejecutar mi código, sigo recibiendo este error:
$ nodo.
(nodo: 11216) UnhandledPromiseRejectionWarning: ReferenceError: AbortController no está definido
en RequestHandler.execute (C:\ pathTo \node_modules\discord.js\src\rest\RequestHandler.js:172:15)
He estado trabajando con Discord.js desde 2018, por lo que me sorprendió que tuviera problemas con la nueva versión. ¿Es este un problema con la biblioteca Discord.js v13 ? Si no, ¿cómo puedo solucionar el error?
Uno de los requisitos previos para usar Discord.js v13 es que necesita usar NodeJS v16.6 o superior (énfasis mío):
v13 requiere Node 16.6 o superior para usar, así que asegúrese de estar actualizado. Para verificar su versión de nodo, use node -v
La solución es actualizar su versión de nodo, puede confirmar su versión de nodo actual ejecutando node -v . Hay una variedad de formas diferentes de actualizar el nodo, una forma es ejecutar los siguientes comandos si está usando Linux / iOS:
> npm install -gn > n latest El primer comando instala la interfaz de línea de comandos n y luego el segundo usa n para actualizar a la última versión estable de node. Si está en Windows, puede instalar NVM como se describe en esta respuesta de pradeek .
Nota para los usuarios de Heroku :
Una vez que haya seguido los pasos anteriores para actualizar la versión de su nodo, es posible que deba actualizar su archivo package.json agregando/actualizando los motores:
"engines": { "node": "16.x" } Hace algunas versiones de discordjs, se agregó una función que cancela las solicitudes que tardan demasiado (más de 15 segundos). Para lograr esta funcionalidad, antes usaban el paquete de nodo abort-controller . Sin embargo, ahora que nodejs ha evolucionado, ahora tiene su propio AbortController global sin necesidad de requerir un paquete externo. Discord.js v13 ahora se basa en este global, ya que ya no usan el paquete del controlador de cancelación . Para usar el AbortController global proporcionado por nodejs, debe usar el nodo v15 o superior; sin embargo, según lo recomendado por la guía discord.js, debe usar v16.6+ para habilitar la compatibilidad con otras funciones que pueda usar.
Si no desea instalar node.js v16 en todo su sistema y simplemente agregarlo en el proyecto de su bot, puede hacerlo:
npm install node@16.6.1 --save-exactY se ejecutará.
N, el actualizador utilizado en la solución, no funciona para los sistemas operativos Windows. Si usa Windows, todavía hay una forma de actualizar. Vaya al sitio web de instalación de Node.JS
Si va allí manualmente sin hacer clic en el enlace que proporcioné, deberá cambiar de la opción LTS a Actual.
^ como se ve aquí
Elija el instalador MSI y la arquitectura con la que se instaló su versión anterior de Node.JS.
Si no conoce la arquitectura con la que se instaló su versión anterior de Node.JS, puede verificar verificando si la carpeta nodejs está en "C:/Archivos de programa" o "C:/Archivos de programa (x86)"
Luego simplemente instale Node.JS como si fuera la primera vez.
¡Disfrutar!