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

discord.js 12调用$eval命令报execute is not a function错误

问题排查结果与解决方案

你的报错核心是命令导出的方法定义和入口调用逻辑不匹配,具体原因和修复方案如下:

根因说明

  • 方法名不匹配:你在eval命令文件中导出的执行函数命名为run,但在index.js的消息处理逻辑中,调用命令时用的是.execute()方法,二者名称不一致导致找不到对应函数,触发类型错误。
  • 参数传递错误:eval命令的run方法定义的入参顺序是(client, message, args),但index.js调用时只传入了(message, args),漏掉了client参数,即便改对方法名也会产生后续逻辑错误。

修复方案

方案1(推荐:统一所有命令的方法命名)

  1. 修改eval命令文件的导出属性名,将run: async (client, message, args) => {修改为execute: async (client, message, args) => {
  2. 修改index.js中的命令调用逻辑,将client.commands.get(command).execute(message, args);修改为client.commands.get(command).execute(client, message, args);,补全传递的client参数。

方案2(适配现有eval命令的命名)

直接修改index.js中的命令调用逻辑,将client.commands.get(command).execute(message, args);修改为client.commands.get(command).run(client, message, args);即可。

可选优化建议

你可以在eval命令的catch块中把错误信息加入返回的embed描述里,方便排查eval执行过程中的问题,示例:

catch (e) {
    const embed = new MessageEmbed()
        .setTitle('An Error has occured')
        .setDescription(`\`\`\`${e.stack}\`\`\`)
    return await msg.edit(embed);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:18:03