Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
Elementos que no se agregan a la matriz/mapa en el nodo

Tengo este código que recorre todos los directorios en los commands de carpeta y luego recorre cada archivo en cada uno de esos directorios. Luego importa el módulo, lo convierte a JSON y lo agrega a una matriz llamada commands y un mapa llamado client.commands .

 let commands = []; client.commands = new Map(); fs.readdir(__dirname + "/../commands/", (err, dirs) => { if (err) return console.error(err); for (let dir of dirs) { fs.readdir(__dirname + `/../commands/${dir}/`, (err, files) => { if (err) return console.error(err); for (let file of files) { let command = require(`../commands/${dir}/${file}`); commands.push(command.data.toJSON()); client.commands.set(command.data.name, command); console.log(commands); } }); } }); console.log(commands);

Si console.log . registro el valor de los commands en el bucle for más interno, el resultado es exactamente como se esperaba. Sin embargo, si lo registro en el exterior del bloque de código completo, simplemente imprime una lista vacía.

about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Creo que deberías usar la recursión para leer los archivos dentro de las carpetas de forma recursiva. Y a continuación, enlace la pregunta que ya se hizo, creo que ayudará a resolver esto.Node.js fs.readdir búsqueda de directorio recursivo

about 4 years ago · Santiago Gelvez Denunciar

0

Esto se parece a discord.js para mí.

 client.commands = new Discord.Collection(); const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith(".js")); for (const file of commandFiles) { const command = require(`.commands/${file}`); client.commands.set(command.name, command); }

Tus comandos deberían verse así

 module.exports = { name: "name", description: "description", execute() { // execution code } }

Luego puede usarlo llamando a la función u obteniendo las variables

 client.commands.get(/* Name of command */).execute();
about 4 years ago · Santiago Gelvez Denunciar

0

dado que readdir() es asíncrono, se llama a su consola externa. log() antes de que la función en el medio se ejecute por completo.

Ajusté la sintaxis a la asíncrona más moderna y esperé, ya que las funciones de respaldo ya no son la mejor práctica, desafortunadamente no pude probarla, pero al menos es la forma correcta de hacerlo;)

 let commands = []; client.commands = new Map(); async function main() { try { const dirs = await fs.readdir(__dirname + "/../commands/") for (let dir of dirs) { const files = await fs.readdir(__dirname + `/../commands/${dir}/`) for (let file of files) { let command = require(`../commands/${dir}/${file}`); commands.push(command.data.toJSON()); client.commands.set(command.data.name, command); console.log(commands); } } } catch (error) { console.error(err) } console.log(commands); } main()
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda