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

discord.js加载命令时报TypeError:无法读取undefined的'name'属性

错误根因

报错指向command.data.name读取失败,说明require引入对应命令文件后,得到的command对象不存在data属性,所以读取data下的name触发空指针错误。

排查步骤

替换原有加载代码为带调试输出的版本,定位具体出问题的命令文件:

for (const file of commandFiles) {
    console.log(`当前加载文件: ${file}`);
    const command = require(`./commands/${file}`);
    // 提前校验data字段是否存在
    if (!command?.data) {
        console.error(`加载失败:${file} 未导出合法的data属性,已跳过`, command);
        continue;
    }
    client.commands.set(command.data.name, command);
}

运行后查看控制台输出的加载失败对应的文件名,针对该文件排查即可。

常见问题及解决方案

  • 命令文件导出格式错误:如果近期把命令文件的CommonJS导出module.exports = { data: ..., execute: ... }改成了ES模块的export default,需要把引入代码改成const command = require(./commands/${file}).default;,或者把命令文件的导出改回CommonJS规范。
  • 命令文件漏写/错写data字段:排查对应文件的导出内容,确认存在data属性且拼写正确(大小写敏感,Data/DATE都不匹配),如果是斜杠命令,需要确保data是SlashCommandBuilder的实例化结果。
  • 命令文件存在语法错误:对应文件有语法问题导致require加载后得到空对象,直接单独运行该命令文件即可触发语法报错,修正语法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:36:05