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

Discord.js报错:require(...)不是函数,对应文件已存在仍未解决

解决Discord.js机器人启动时的TypeError: require(...) is not a function报错

问题原因

你的代码在循环加载src/functions下的文件时,默认每个文件都导出了一个可被调用的函数(并传入client参数),但其中至少有一个文件没有以函数形式导出内容,导致require(...)返回的不是函数,调用时触发报错。

解决方案

1. 检查函数文件的导出格式

遍历src/functions所有子文件夹下的.js文件,确保每个文件都按如下格式导出函数:

// 示例:handleEvents.js 正确导出方式
module.exports = (client) => {
  client.handleEvents = () => {
    // 你的事件处理逻辑
  };
};

如果某个文件不需要接收client参数,或者只是导出常量/对象,要么修改它的导出为函数形式,要么排除这类文件。

2. 给循环添加安全校验(用于定位问题文件)

在加载文件的循环中加入类型判断,既能避免报错,还能打印出有问题的文件路径:

for (const folder of functionFolders) {
  const functionFiles = fs
    .readdirSync(`./src/functions/${folder}`)
    .filter((file) => file.endsWith(".js"));
  for (const file of functionFiles) {
    const exported = require(`./functions/${folder}/${file}`);
    // 仅当导出内容是函数时才调用
    if (typeof exported === "function") {
      exported(client);
    } else {
      console.error(`错误:文件 ${folder}/${file} 未导出函数,当前导出内容:`, exported);
    }
  }
}

运行后终端会输出异常文件的路径,针对性修复即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:12:47