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

使用discord.js部署斜杠命令时报setInterval(...).unref is not a function错误

错误原因
  • Node.js版本不符合discord.js依赖要求:你使用的discord.js版本最低要求Node.js 16.9.0及以上运行环境,旧版本Node.js中setInterval返回的定时器对象没有unref方法,直接触发该类型错误。
  • 代码依赖导入不全:你用到了REST、Routes两个对象,但没有在代码头部引入对应依赖,后续运行也会触发额外报错。
  • 参数判断逻辑错误:process.argv默认会包含Node.js执行路径、当前脚本路径两个参数,长度至少为2,你写的if (process.argv.length)判断永远为真,永远只会注册单服务器斜杠命令,不会触发全局命令注册逻辑。
  • Token配置冲突:你同时写了client.login("Your Token")硬编码Token和给REST实例使用process.env.TOKEN环境变量Token的逻辑,二者不一致会导致权限校验失败。
解决方法
  1. 升级Node.js版本到16.9.0及以上,升级完成后执行node -v确认版本号符合要求。
  2. 补全代码头部的依赖导入语句,如果不需要用到Client实例可以直接删除相关代码,单独注册斜杠命令不需要初始化Client:
const { REST, Routes } = require('@discordjs/rest');
const Discord = require("discord.js");
  1. 修正服务器ID的判断逻辑,改为判断传入参数数量是否大于等于3,取第三个参数作为服务器ID:
if (process.argv.length >= 3) {
    await rest.put(
        Routes.applicationGuildCommands(process.env.CLIENT_ID, process.argv[2]), 
        { body: commands }
    );
}
  1. 统一Token配置:如果使用环境变量就删除client.login("Your Token")的硬编码逻辑,或者确认两处Token配置一致。如果仅需要注册命令不需要运行机器人,完全可以删除Client初始化和login的相关代码,减少不必要的依赖加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:18:02