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

Discord.js开发报错:Cannot read property 'startsWith' of undefined如何解决

报错原因与修复方案

报错原因

核心原因是代码尝试访问message.content的startsWith方法时,message.content的值为undefined,触发类型错误,常见触发场景如下:

  • 使用discord.js v13及以上版本时,未开启Message Content Intent权限,Discord API不会返回消息内容字段,导致content为undefined
  • 客户端初始化时未配置消息内容相关的intents,无法拉取消息内容数据
  • 事件回调参数传递错误,message对象本身不是正确的消息实例,缺少content字段

修复方案

步骤1:添加防御性判断(优先解决程序崩溃问题)

修改代码中的判断行,先校验message.content是否存在,再调用对应方法:

// 原代码
// if (!message.content.startsWith(prefix) || message.author.bot) return;
// 修改后
if (!message.content || !message.content.startsWith(prefix) || message.author.bot) return;

步骤2:开启Discord开发者后台权限

  1. 打开Discord Developer Portal,进入对应Bot应用的「Bot」设置页
  2. 找到「Privileged Gateway Intents」板块,开启Message Content Intent开关并保存

步骤3:校验客户端初始化的intents配置

确保初始化Discord客户端时已经添加了必要的intent:
discord.js v14版本示例:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds, // 必要:服务器权限
    GatewayIntentBits.GuildMessages, // 必要:服务器消息权限
    GatewayIntentBits.MessageContent, // 必要:消息内容权限
    GatewayIntentBits.DirectMessages // 可选:如需接收私信消息可添加
  ]
});

discord.js v13版本示例:

const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.MESSAGE_CONTENT,
    Intents.FLAGS.DIRECT_MESSAGES
  ]
});

步骤4:校验事件绑定逻辑

确保绑定messageCreate事件时参数传递正确,调用你导出的处理函数时参数顺序不要错位:

// 正确示例
client.on('messageCreate', (message) => {
  // 参数顺序为 client, message, Discord,不要传错
  require('./你的处理文件路径')(client, message, Discord);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:01