首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord.js错误: EISDIR:目录上的非法操作,请阅读

问Discord.js错误: EISDIR:目录上的非法操作,请阅读
EN

Stack Overflow用户
提问于 2021-11-25 16:32:29
回答 1查看 982关注 0票数 0

当我尝试执行这段代码时,我会得到一个错误。“错误: EISDIR:目录上的非法操作,请阅读”。

第18行:第19栏

代码语言:javascript
复制
const { Client, Intents, Collection } = require('discord.js')

const config = require('./config.json')

const fs = require('fs')

const bot = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] })

bot.commands = new Collection()

var cmdFiles = fs.readFileSync('./cmd').filter(f => f.endsWith(".js"))

for(const f in cmdFiles) {
    const cmd = require(`./commands/${f}`)

    bot.commands.set(cmd.help.name, cmd)
}

bot.once("ready", () => {
    console.log('Bot is ready!')
})

bot.on("messageCreate", async message => {
    if(message.author.bot) return;

    var prefix = config.prefix

    if(!message.content.startsWith(prefix)) return;

    var array = message.content.split(" ");

    var command = array[0];

    const data = bot.commands.get(command.slice(prefix.length))

    if(!data) return;

    var args = array.slice(1)

    try {
        await data.run(bot, message, args)
    } catch(e) {
        await message.channel.send(e)
        await console.log(e)
    }
})

bot.login(config.token)

是的,所有配置都是定义的。我试着寻找这个错误,但没有得到我需要的任何东西。

我要做的是加载数组列表中目录“cmd”中的每个文件,并在调用时运行命令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-25 16:37:43

改变这一点:

代码语言:javascript
复制
var cmdFiles = fs.readFileSync('./cmd').filter(f => f.endsWith(".js"));

对此:

代码语言:javascript
复制
var cmdFiles = fs.readdirSync('./cmd').filter(f => f.endsWith(".js"));

正如您的问题所述,./cmd是一个目录,您不能用fs.readFileSync()列出目录中的文件。您可以使用fs.readdirSync()来做到这一点。

fs.readFileSync()尝试以文件的形式打开目录并读取其内容。因为它不是文件,所以会得到EISDIR错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70114523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档