Estaba creando el archivo/comando meme.js y recibí este error. No sé cómo resolver este problema. ¿Me pueden ayudar?
así que este es mi código:
const fetch = require('node-fetch'); const randomPuppy = require("random-puppy"); module.exports = { name: "meme", description: "Sends an epic meme", execute(message) { const subReddits = ["dankmeme", "meme", "me_irl"]; const random = subReddits[Math.floor(Math.random() * subReddits.length)]; const img = await randomPuppy(random); console.log(img) const memeEmbed = new MessageEmbed() .setColor("#fa0557") // .setImage(`${img}`) .setTitle(`From /r/${random}`) .setURL(`https://reddit.com/r/${random}`); message.channel.send({ embeds: [memeEmbed] }); } }Y este es el registro que obtuve:
Promise { <pending> }El código publicado arroja un error de sintaxis que await solo se puede usar dentro de una función asíncrona, que `module.exports.execute' no se ha declarado como.
Intente declarar execute como una función asíncrona
module.exports = { name: "meme", description: "Sends an epic meme", async execute(message) { . . .Si el registro en la publicación muestra
Promise { <pending> }en la consola, actualice la publicación con el código necesario para reproducir el problema.
Su código como se muestra no se ejecutará. Muestra await randomPuppy(random) , pero await NO está permitido allí porque no está dentro de una función async . Entonces, sospecho que su código real no tiene la await y es por eso que muestra Promise { <pending> } en su consola. Tienes que usar await o .then() con la promesa de que randomPuppy(random) regresa.
Si arreglo su código para que se ejecute agregando async a la definición de execute() , entonces el console.log(img) realmente funciona bien:
const randomPuppy = require("random-puppy"); module.exports = { name: "meme", description: "Sends an epic meme", async execute(message) { const subReddits = ["dankmeme", "meme", "me_irl"]; const random = subReddits[Math.floor(Math.random() * subReddits.length)]; const img = await randomPuppy(random); console.log(img) } } module.exports.execute().then(result => { console.log(result); }).catch(err => { console.log(err); });Y me sale en mi consola esto:
http://imgur.com/FFkL628.gif doneEntonces, mi conclusión es que el código que publicaste en tu pregunta no es el código que realmente estás ejecutando. Este código que se muestra aquí funcionará bien.