部署Discord机器人到Heroku时出现2个错误,进程崩溃求助
错误根因
该报错是discord.js依赖加载失败导致进程异常退出,触发原因主要有三类:Node.js版本不兼容、依赖缺失、Heroku运行配置错误。
修复步骤
- 匹配Node.js版本
discord.js v14及以上版本要求Node.js最低版本为16.9.0,Heroku默认Node.js版本可能低于该要求。你需要在项目根目录的package.json中添加引擎配置,示例:
{ "engines": { "node": "16.9.0", "npm": "8.x" } }
版本号可替换为你本地开发使用的兼容版本。
修正依赖配置
检查package.json的dependencies字段,确认discord.js已被列入该分类下,不要仅放在devDependencies中。Heroku生产部署默认不安装devDependencies的包,如果你确实需要安装开发依赖,可在Heroku配置变量中添加NPM_CONFIG_PRODUCTION=false。调整Procfile与dyno配置
项目根目录的Procfile需要指定worker启动命令,示例如下,将index.js替换为你实际的启动文件路径:
worker: node index.js
配置提交后,进入Heroku控制台的资源管理页,关闭默认开启的web dyno,开启worker dyno,避免Heroku因找不到web服务端口判定进程异常。
- 核对环境变量
进入Heroku控制台设置页的配置变量板块,确认你所需的Discord机器人token、客户端ID等所有环境变量都已正确填写,参数缺失也会触发初始化失败。
内容的提问来源于stack exchange,提问作者Dylan Roff
相关产品推荐
相关产品推荐

