Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda