Discord.js 14.9.0机器人服务器部署遇UND_ERR_CONNECT_TIMEOUT错误求助
解决方案
一、ConnectTimeoutError(UND_ERR_CONNECT_TIMEOUT)问题处理
因同服务器内其他同版本机器人可正常运行,问题大概率集中在当前机器人的配置或服务器针对该进程的网络限制上,尝试以下步骤:
- 排查服务器网络限制
检查服务器防火墙、安全组的出站规则,确保允许访问Discord API的443端口;同时测试服务器DNS解析Discord域名的速度,可临时将DNS改为8.8.8.8或1.1.1.1重试。 - 锁定undici适配版本
Discord.js 14.9.0官方适配的undici版本为^5.22.1,直接在package.json中指定该版本,避免版本冲突:
之后执行"dependencies": { "undici": "5.22.1", "discord.js": "14.9.0" }npm install重新安装依赖。 - 调整Discord.js连接超时配置
在Client实例化时增加rest超时设置,延长超时时间:const { Client } = require('discord.js'); const client = new Client({ rest: { timeout: 30000 // 调整为30秒,默认10秒 }, // 其他原有配置 }); - 检查服务器资源负载
使用top或htop命令查看服务器CPU、内存占用情况,若资源紧张会导致连接请求超时,需清理占用资源的进程或升级服务器配置。
二、package-lock.json体积翻倍与冗余包问题处理
- 彻底重建依赖与lock文件
删除现有node_modules和package-lock.json,重新安装依赖:rm -rf node_modules package-lock.json npm install - 使用npm ci替代npm install
部署环境下优先使用npm ci,它会严格按照package-lock.json安装依赖,不会生成冗余内容,且速度更快:npm ci - 合并重复依赖
升级npm到最新稳定版后,执行npm dedupe命令,该命令会自动合并node_modules中重复的依赖包,减少lock文件体积:npm dedupe - 仅安装生产依赖
部署时添加--production参数,避免安装devDependencies中的开发依赖:npm install --production
内容的提问来源于stack exchange,提问作者Adman
相关产品推荐
相关产品推荐

