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

Discord.js开发报错:TypeError无法读取null的id属性求助

错误排查:TypeError: Cannot read properties of null (reading 'id')

你的代码片段:

const { options, guildId, member } = interaction;
const role = options.getRole("role");
const description = options.getString("description");
const emoji = options.getString("emoji");

const newRole = {
  roleId: role.id,
  roleDescription: description || "No Description",
  roleEmoji: emoji || "",
}

报错信息:

/Users/surendrasah/Desktop/MonDisTech/Commands/Roles/AddRole.js:42
roleId: role.id,
^
TypeError: Cannot read properties of null (reading 'id')
at Object.execute

错误原因

role变量的值为null,导致访问role.id时触发类型错误。options.getRole("role")返回null通常有以下几种可能:

  • 命令注册时,.addRoleOption的name参数和代码中getRole传入的"role"不匹配
  • 命令注册时未将该角色参数设为必填(setRequired(true)),执行命令时用户未传入角色参数
  • 执行命令时用户选择的角色无效或不存在

解决方案

  1. 检查命令注册配置
    确保.addRoleOption的name为"role",且设为必填:

    .addRoleOption(option => 
      option.setName("role")
        .setDescription("指定要配置的角色")
        .setRequired(true)
    )
    
  2. 添加null值校验
    在代码里先判断role是否有效,避免直接访问id:

    const role = options.getRole("role");
    // 校验角色是否存在
    if (!role) {
      await interaction.reply({ content: "请选择一个有效的角色!", ephemeral: true });
      return;
    }
    // 后续代码正常执行
    const newRole = {
      roleId: role.id,
      roleDescription: description || "No Description",
      roleEmoji: emoji || "",
    }
    
  3. 验证命令执行流程
    确保执行命令时确实选择了服务器内存在的角色,没有跳过参数输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:50:26