【问题标题】:How to iterate through a folder in JavaScript?如何遍历 JavaScript 中的文件夹?
【发布时间】:2021-02-13 01:40:01
【问题描述】:

我正在尝试遍历命令文件的文件夹来为不和谐机器人创建帮助命令。 这是我目前的代码。

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 未定义。这里有什么问题?

【问题讨论】:

  • 命令结构是什么样的?

标签: javascript node.js iteration discord.js


【解决方案1】:

C:/Bot/commands 是存储命令的文件夹,但字符串 'C:/Bot/commands' 不是文件夹 - 它是字符串。

要遍历文件夹,您需要通过fs.readdir 阅读或同步版本

【讨论】:

    【解决方案2】:

    commands 目前只是一个字符串。如果要获取文件夹中所有文件的数组,请使用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);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2017-02-25
      • 1970-01-01
      • 2017-04-03
      • 2023-03-03
      相关资源
      最近更新 更多