使用discord.js开发机器人时出现ConnectTimeoutError连接超时错误求助
Discord.js机器人连接超时(UND_ERR_CONNECT_TIMEOUT)解决方法
问题场景
运行node .启动Discord.js机器人时触发连接超时错误,机器人代码如下:
const { Client, IntentsBitField } = require('discord.js'); const client = new Client({ intents: [ IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMembers, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent ], }) client.on('ready', (c) => { console.log(`Logged in as ${client.user.tag}!`) }) client.on('messageCreate', (message) => { if (message.content === 'Hello') { message.reply('Hello World!') } }) client.login( 'my_token' )
错误信息:
node:internal/process/promises:288 triggerUncaughtException(err, true /* fromPromise */); ^ ConnectTimeoutError: Connect Timeout Error at onConnectTimeout (C:\Users\biket\Desktop\discord-bot-gia-eshop\node_modules\undici\lib\core\connect.js:182:24) at C:\Users\biket\Desktop\discord-bot-gia-eshop\node_modules\undici\lib\core\connect.js:129:46 at Immediate._onImmediate (C:\Users\biket\Desktop\discord-bot-gia-eshop\node_modules\undici\lib\core\connect.js:168:33) at process.processImmediate (node:internal/timers:476:21) { code: 'UND_ERR_CONNECT_TIMEOUT' } Node.js v18.17.1
解决方法
- 排查网络连通性:确认当前网络可正常访问Discord服务,尝试打开Discord官网或客户端测试。若存在DNS解析问题,可手动更换DNS服务器(如8.8.8.8),也可切换网络环境(比如手机热点)验证是否为本地网络限制。
- 延长请求超时时间:在客户端初始化时通过
rest配置项延长超时阈值,给连接更多缓冲时间:
const client = new Client({ intents: [ IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMembers, IntentsBitField.Flags.GuildMessages, IntentsBitField.Flags.MessageContent ], rest: { timeout: 15000 // 设置为15秒,默认5秒 } })
- 验证机器人令牌:确保
client.login中的令牌正确且未过期,可登录Discord开发者门户重新生成令牌替换后重试。 - 检查防火墙/安全软件拦截:本地防火墙、杀毒软件可能阻断了机器人的网络请求,暂时关闭相关软件或添加
node.exe到白名单测试。若使用代理,需确保代理配置正确,可通过设置环境变量HTTP_PROXY/HTTPS_PROXY指定代理地址。 - 更新依赖库:执行
npm update discord.js undici更新discord.js及其依赖的undici库,旧版本可能存在已知的连接bug。
内容的提问来源于stack exchange,提问作者BikeThe2000
相关产品推荐
相关产品推荐

