discord.io开发的Discord Bot在Sparked Hosting启动报错求助
解决 Discord Bot 在 Sparked Hosting 登录崩溃的问题
问题定位
报错 discord.io - Cannot set properties of undefined (setting 'avatar') 说明 Bot 在登录阶段获取自身用户信息时,尝试操作一个未定义的对象,大概率是依赖版本不一致、网络限制或环境差异导致的。
排查与修复步骤
强制依赖版本一致
本地/Heroku 的依赖版本可能和 Sparked Hosting 上安装的存在差异:- 本地执行
npm list导出完整依赖树(含子依赖版本) - 在 Sparked Hosting 终端执行
npm list对比版本 - 在
package.json中指定所有依赖的精确版本号(去掉^或~前缀),重新执行npm install
- 本地执行
验证 Discord API 访问权限
Sparked Hosting 基础套餐可能有出站网络限制:- 在终端执行
curl -H "Authorization: Bot YOUR_TOKEN" https://discord.com/api/v10/users/@me,测试能否正常获取 Bot 自身信息 - 如果请求失败,联系服务商确认是否放行 Discord API 的 443 端口及相关域名
- 在终端执行
调试登录阶段的 API 响应
临时添加日志定位问题:- 在 Bot 登录代码前,手动调用 Discord 的
Get Current User接口,打印返回的用户数据 - 对比本地/Heroku 与 Sparked Hosting 上的返回结果,看是否存在字段缺失
- 若有必要,可临时修改
discord.io包内报错位置的代码,打印当前操作的对象,确认是否为undefined
- 在 Bot 登录代码前,手动调用 Discord 的
正确配置环境变量
Sparked Hosting 支持环境变量设置:- 登录控制面板,找到服务器的「环境变量」或「配置」选项(通常在高级设置中)
- 添加
DISCORD_TOKEN变量并填入令牌,删除本地.env文件后重启 Bot
更换或调整 discord.io 版本
discord.io 是维护不活跃的老旧库:- 降级到本地/Heroku 运行正常的精确版本
- 若问题持续,考虑迁移到
discord.js等活跃维护的库(需适配代码,但能避免兼容性问题)
临时应急方案
如果以上步骤无效:
- 本地打包完整的
node_modules文件夹,FTP 上传到服务器,直接使用验证过的依赖版本 - 重新在 Discord 开发者平台生成新令牌,排除令牌过期或权限问题
内容的提问来源于stack exchange,提问作者Max Antinone
相关产品推荐
相关产品推荐

