Back-off restarting failed container
原因:程序启动后立即崩溃,Zeabur 会不断重启容器。
处理:查看 Runtime Logs,优先确认入口文件、环境变量、端口监听和依赖错误。
ZEABUR DEBUG
这个页面专门记录 Telegram AI Bot 在 Zeabur 部署时遇到的 BackOff、依赖、端口、 环境变量和 ESM 导入问题。以后每次报错,都先按这个顺序排查。
CHECKLIST
BackOff 不代表 Zeabur 坏了,通常是程序启动时崩溃。
先看 Runtime Logs:Zeabur 出现 BackOff 时,不要先乱改代码,先看启动日志最后 30 行。
确认启动命令:检查 package.json 里的 start 脚本是否正确,入口文件是否存在。
确认端口:Zeabur 通常会注入 PORT,代码必须监听 process.env.PORT。
确认环境变量:BOT_TOKEN、AI_PROVIDER、AI_MODEL、API KEY、DATABASE_FILE 等必须完整。
确认依赖安装:不要在 build 阶段读取 node_modules 里的文件,依赖安装顺序要正确。
ERRORS
原因:程序启动后立即崩溃,Zeabur 会不断重启容器。
处理:查看 Runtime Logs,优先确认入口文件、环境变量、端口监听和依赖错误。
原因:ESM 项目里使用了不兼容的 default import。
处理:把 import pdfParse from 'pdf-parse' 改成兼容写法,例如 import * as pdfParse from 'pdf-parse',或按当前库导出结构调整。
原因:文件修改后语法结构损坏,比如括号缺失、函数位置错误、import/export 写坏。
处理:不要只盯着这一行,检查它上面几十行的括号、函数、对象、export 是否完整。
原因:构建阶段尝试读取还没安装好的 node_modules,或者 Dockerfile 步骤顺序不对。
处理:先 npm install,再运行构建或启动;不要把调试命令写进 Docker build 里的错误阶段。
ENV
Zeabur 面板里少一个关键变量,Bot 都可能直接启动失败。
ORDER
先让最小版本跑起来,再逐步加功能,这样最容易定位问题。
先让最小 Bot 启动成功,只接收消息并回复固定文本。
再打开普通 Gemini 文本对话。
再接入图片、文件解析等多模态能力。
最后再接 Gemini Live 语音能力。
每加一个功能就重新部署一次,不要一次性堆完所有功能。