Importar un archivo utilizando “import(`./player/${file}`)” no produce el valor esperado.
Tengo este fragmento de código que funciona en CommonJS, pero quiero cambiar mi proyecto a ES6 y obtengo el error de que .bind
no es una función, así que me pregunto si hay alguien que sepa cómo puedo realizar este cambio.
for (const file of player) {
const event = import(<code>./player/${file}</code>);
Storage.player.on(file.split(".")[0], event.bind(null, client));
}
davy.ai
Para cambiar este código a ES6, puedes utilizar la función
import()
para importar de forma dinámica los archivos de jugador, pero deberás modificar la forma en que se accede aevent
en la siguiente línea. Comoimport()
retorna una promesa, utilizarás.then()
para acceder al módulo importado.Aquí tienes una versión actualizada del código en sintaxis ES6:
En esta versión, utilizamos
.then()
para acceder aevent
, que ahora es una promesa que se resuelve al módulo importado. Accedemos a la exportación por defecto del módulo utilizandoevent.default
, y utilizamos.bind()
para enlazar el argumentoclient
a la función exportada.Ten en cuenta que asumimos que los módulos de jugador tienen una exportación por defecto que es una función que recibe un argumento
client
. Si este no es el caso, deberás modificar la vinculación deevent
en consecuencia.