es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede alojar un bot de Discord en Heroku.

Estoy haciendo un bot de música para Discord con NodeJs, y he estado tratando de alojarlo en Heroku, pero sigue fallando con este problema

 /app/node_modules/discord.js/src/rest/APIRequest.js:34
    agent ??= new https.Agent({ ...this.client.options.http.agent, keepAlive: true });
           ^^^
SyntaxError: Token inesperado '??='
     at wrapSafe (internal/modules/cjs/loader.js:1001:16)
     at Module._compile (internal/modules/cjs/loader.js:1049:27)
     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
     at Module.load (internal/modules/cjs/loader.js:950:32)
     at Function.Module._load (internal/modules/cjs/loader.js:790:12)
     at Module.require (internal/modules/cjs/loader.js:974:19)
     at require (internal/modules/cjs/helpers.js:93:18)
     at Object.<anonymous> (/app/node_modules/discord.js/src/rest/RESTManager.js:5:20)
     at Module._compile (internal/modules/cjs/loader.js:1085:14)
     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bee25@1.0.0 start: `node index.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the bee25@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2022-01-03T09:38:33.704796+00:00 app[Worker.1]: 
npm ERR! A complete log of this run can be found in:
npm ERR!     /app/.npm/_logs/2022-01-03T09_38_33_700Z-debug.log
El estado ha cambiado de up a crashed
at=error code=H14 desc="No hay procesos web en ejecución" method=GET path="/" host=bot-bee25.herokuapp.com request_id=e40f06e4-6d14-4cd4-ba4e-baa2091a87c9 fwd="216.245.221.84" dyno= connect= service= status=503 bytes= protocol=https

¿Cómo puedo solucionar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el código está utilizando el operador de fusión nula (“??=”), el cual no es compatible con la versión actual de Node.js. Este error ocurre cuando el código se ejecuta en los servidores de Heroku, que utilizan una versión anterior de Node.js. La solución consiste en actualizar la versión de Node.js utilizada por el servidor de Heroku o evitar el uso del operador de fusión nula en el código.

    Para actualizar la versión de Node.js en Heroku, sigue estos pasos:

    1. Abre tu Panel de control de Heroku y dirígete a la configuración de la aplicación.
    2. Haz clic en el botón “Añadir buildpack” y selecciona “Node.js”.
    3. Haz clic en la opción “Ajustes” y, en “Config Vars”, añade una nueva variable llamada “NODE_VERSION” con el valor de la versión de Node.js deseada (por ejemplo, 16.13.0).
    4. Guarda los cambios y vuelve a implementar la aplicación.

    Si prefieres evitar el uso del operador de fusión nula en el código, reemplaza el operador con una sintaxis alternativa que logre el mismo resultado. Por ejemplo, puedes utilizar un operador ternario o un operador lógico OR regular.

    // Ejemplo de uso del operador de fusión nula
    const agent = new https.Agent({ ...this.client.options.http.agent, keepAlive: true }) ?? undefined;
    
    // Sintaxis alternativa utilizando un operador ternario
    const agent = new https.Agent({ ...this.client.options.http.agent, keepAlive: true }) ? new https.Agent({ ...this.client.options.http.agent, keepAlive: true }) : undefined;
    
    // Sintaxis alternativa utilizando un operador lógico OR
    const agent = new https.Agent({ ...this.client.options.http.agent, keepAlive: true }) || undefined;
    

    Realizando estos cambios, el bot de música de Discord debería funcionar sin problemas en Heroku, sin errores.

Comments are closed.