Heroku部署应用出现数据库连接错误,mongoose.connect应填写什么连接URL
问题根源
你当前代码中填写的mongodb://localhost/Blog是本地开发环境下的MongoDB连接地址,应用部署到Heroku后,Heroku服务器上没有运行对应的本地MongoDB实例,自然无法建立连接,导致报错。
正确配置步骤
- 首先准备可公网访问的MongoDB服务,可选择MongoDB Atlas免费集群,创建完成后获取对应连接字符串,格式为
mongodb+srv://<数据库用户名>:<数据库密码>@<集群标识>.mongodb.net/<数据库名>?<可选参数>,数据库名可直接填写你原项目使用的Blog - 不要将数据库连接字符串硬编码到代码中,登录Heroku后台进入对应应用的「设置」页面,找到「配置变量」模块,新增变量名为
MONGODB_URI,变量值填写你刚才获取的MongoDB连接字符串 - 修改数据库连接代码,适配生产/开发双环境,修改后的参考代码如下:
var mongoose = require("mongoose"); // 生产环境读取Heroku配置变量的连接地址,本地开发默认走本地MongoDB const mongoConnectUri = process.env.MONGODB_URI || "mongodb://localhost/Blog"; mongoose.connect(mongoConnectUri); var database = mongoose.connection; database.on( "error", console.error.bind(console, "Error connecting to the database") ); database.once("open", () => console.log("Successfully connected to the database") ); module.exports = database;
- 将修改后的代码重新部署到Heroku,运行
heroku logs --tail即可验证数据库连接状态。
内容的提问来源于stack exchange,提问作者user14851171
相关产品推荐
相关产品推荐

