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 done
Entonces, 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.