提问者:小点点

如何在JavaScript中迭代文件夹?


我正在尝试遍历一个命令文件文件夹,为一个discord bot制作一个帮助命令。到目前为止这是我的代码。

module.exports = {
  name: 'help',
  description: 'Lists current commands.',
  execute(message) {
    //was the first time i made something interesting out of a for loop
    if (message.content.toLowerCase() === '$help') {
      const commands = 'C:/Bot/commands';
      const Discord = require('discord.js');
      const helpEmbed = new Discord.MessageEmbed()
        .setTitle("Commands")
        .setColor(0x6e7175)
        .setFooter('Provided by Echo', 'https://cdn.discordapp.com/avatars/748282903997186178/6288e1f487e111b211aa9966c583d948.png?size=128')
        .setTimestamp()

      for (i of commands) {
        let title = i.name
        let value = i.description
        helpEmbed.addField(title, value)
      }
      message.channel.send(helpEmbed)
    }
  }
}

c:/bot/commands是存储所有命令的文件夹,此时i.name和i.description未定义。这里有什么问题?


共2个答案

匿名用户

C:/bot/commands是存储COMAND的文件夹,但字符串“C:/bot/commands”不是文件夹,而是字符串。

对于迭代文件夹,您需要通过fs.readdir或sync版本来读取它

匿名用户

命令当前只是一个字符串。如果要获取文件夹中所有文件的数组,请使用fs

const fs = require('fs'); // node.js built in module
const files = fs.readdierSync('../commands'); // get the names of all files in the foler

for (file of files) {
 // now you can require the file
 const { name, description } = require(`../commands/${file}`);
 embed.addField(name, description);
}