如何解决Heroku部署应用运行时出现的应用错误问题
问题根因
从错误日志可以直接定位核心问题:
- Heroku运行环境没有配置
Database_URL环境变量,日志明确输出Database_URL undefined - 应用读取不到远程数据库地址,默认尝试连接本地27017端口的MongoDB服务,但Heroku的运行环境没有预装MongoDB,触发
connect ECONNREFUSED 127.0.0.1:27017错误 - 后续的Mongoose查询超时、H12请求超时都是数据库连接失败导致的连锁问题
你本地运行正常的原因是本地开发环境要么提前配置了Database_URL变量,要么本地启动了MongoDB服务,不会触发连接异常。
修复方案
- 先准备好你使用的云MongoDB服务的有效连接字符串,注意替换字符串里的用户名、密码、数据库名参数
- 给Heroku应用配置环境变量,二选一即可:
- 命令行配置:在本地项目根目录执行
heroku config:set Database_URL="替换为你的MongoDB连接字符串" - 后台配置:打开Heroku对应应用的Settings页面,找到Config Vars板块,点击「Reveal Config Vars」,新增key为
Database_URL,value为你的MongoDB连接字符串后保存
- 命令行配置:在本地项目根目录执行
- 重启Heroku应用:执行
heroku restart,等待启动完成后验证访问即可 - 可选优化:在代码中补充数据库连接失败的异常捕获逻辑,避免未处理的Promise rejection导致应用后续运行异常
内容的提问来源于stack exchange,提问作者Predator
相关产品推荐
相关产品推荐

