Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!