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

Discord.js运行deploy-commands.js报Expected token present错误

Discord.js部署斜杠命令报token未设置错误排查方案

错误现象

执行部署命令node deploy-commands.js时抛出如下错误:

Error: Expected token to be set for this request, but none was present
    at _RequestManager.resolveRequest (D:\github\TAD\Alienbot-2.0\node_modules\@discordjs\rest\dist\index.js:876:15)
    at _RequestManager.queueRequest (D:\github\TAD\Alienbot-2.0\node_modules\@discordjs\rest\dist\index.js:849:46)
    at REST.raw (D:\github\TAD\Alienbot-2.0\node_modules\@discordjs\rest\dist\index.js:1003:32)
    at REST.request (D:\github\TAD\Alienbot-2.0\node_modules\@discordjs\rest\dist\index.js:999:33)
    at REST.put (D:\github\TAD\Alienbot-2.0\node_modules\@discordjs\rest\dist\index.js:993:17)
    at Object.<anonymous> (D:\github\TAD\Alienbot-2.0\deploy-commands.js:19:6)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)

控制台输出的cmd1 active/cmd2 active属于命令文件加载日志,说明命令文件读取环节无异常,问题完全出在请求鉴权环节。

排查步骤(按优先级排序)

  • 校验config.json文件合法性
    首先确认config.json和deploy-commands.js在同一目录下,文件内容严格符合JSON语法:
    • 所有字段名、字符串值必须用双引号包裹,JSON不支持单引号
    • 字段名严格区分大小写,必须是小写token、clientId、guildId,不能写成大写开头的Token
    • 最后一个配置项末尾不能加多余逗号,token值前后不要留多余空格、换行
      正确配置示例:
    {
      "clientId": "你的机器人应用ID",
      "guildId": "测试服务器ID",
      "token": "从Discord开发者面板复制的机器人令牌"
    }
    
  • 确认token值有效
    打开Discord开发者面板进入对应机器人的Bot页,点击重置Token生成新的有效令牌,完整复制后替换config.json里的旧token:旧token一旦重置、泄露就会直接失效,哪怕字符差一个也会鉴权失败。注意不要把clientId、guildId的值错填到token字段。
  • 调试确认配置读取结果
    在deploy-commands.js的配置导入行下方加一行调试代码,确认实际读到的配置值:
    const { clientId, guildId, token } = require('./config.json');
    // 新增调试行
    console.log('配置读取结果:', { clientId, guildId, tokenLength: token?.length });
    
    重新运行部署命令,如果打印出来的tokenLength是undefined或者0,说明config.json的字段/路径/语法还是有问题,修正到能读到正确的token长度为止。
  • 修复版本兼容问题
    如果你使用的是v14及以上版本的discord.js,原有代码引用v9版本API会存在兼容问题,直接修改两行代码即可:
    // 删除原有的discord-api-types导入语句,改成从discord.js引入Routes
    const { Routes } = require('discord.js');
    // REST实例初始化时API版本改成10
    const rest = new REST({ version: '10' }).setToken(token);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:15:41