You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js开发遇Error: ENOTDIR 扫描setWelcome.js文件报错如何解决?

错误原因

你当前的代码逻辑默认commands目录下的所有条目均为子文件夹,但你实际直接将setWelcome.js放在了commands根目录下。代码遍历到setWelcome.js时,会把该文件当成文件夹调用readdirSync读取,自然抛出ENOTDIR(不是目录)的错误。

解决方案

根据你的需求二选一即可:

方案1:不需要子文件夹分类,所有命令直接放在commands根目录

将index.js中命令注册的逻辑替换为以下代码:

// 替换原来的const commandFolders = ... 及后续的for循环部分
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);
}

方案2:保留子文件夹分类逻辑

调整项目目录结构即可:

  • 在commands目录下新建对应分类的子文件夹,例如/commands/settings/
  • 将setWelcome.js移动到新建的子文件夹内
额外注意

你当前的setWelcome.js为空文件,后续需要导出命令的必要属性,否则命令注册阶段会报错,可参考以下基础模板编写:

module.exports = {
    name: 'setwelcome', // 命令触发名,必须保持唯一
    description: '设置服务器欢迎消息',
    execute(message, args) {
        // 此处编写命令触发后的业务逻辑
    }
}

内容的提问来源于stack exchange,提问作者user16982681

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:06:08