MongoDb Atlas 未连接到 Heroku

MongoDb Atlas not connecting to Heroku

我已将 MongoDb Atlas 中的所有 IP 0.0.0.0/0 列入白名单。

我在 Heroku 中设置了 MONGO_URI 配置变量(配置键是 MONGO_URI 并且值设置正确)。

这是我的 db.js 代码

if (process.env.NODE_ENV !== 'production') { require('dotenv').config() }
const mongoose = require('mongoose')

const connectDB = async () => {
    const db = process.env.MONGO_URI
    try {
        await mongoose.connect(db, {
            useNewUrlParser: true,
            useCreateIndex: true,
            useFindAndModify: false,
            useUnifiedTopology: true
        })

        console.log('MongoDB Connected...')
    } catch (err) {
        console.error(err.message)
        // Exit process with failure
        process.exit(1)
    }
}

module.exports = connectDB

任何人都知道这里的问题我的应用程序在其他方面运行得很好它只是没有连接到数据库。

在 Heroku 上默认 process.env.NODE_ENVproduction,所以它不会使用 .env 文件,即使它在项目文件夹下。

在 Heroku 中添加 MONGO_URIyour mongodb connection string 键值对应该可以解决问题:

  1. 登录 Heroku
  2. select 你的应用程序
  3. 单击设置选项卡
  4. 找到'Config Vars'部分
  5. 点击'Reveal Config Vars'
  6. 添加 MONGO_URI 作为 KEY 和 your connection string(no quote) 作为 VALUE
  7. 点击添加按钮
  8. 再次打开您的应用程序

更新: 我使用您的上述代码创建了一个演示,并在将其连接到我的 git 存储库后按照上述步骤部署在 Heroku 上。它工作正常。

Live demo

Source code

您还可以通过点击 Heroku 应用程序页面(右上角)中的 More -> View logs 查看节点控制台。