【问题标题】:Unable to connect to mongodb database with my heroku app?无法使用我的 heroku 应用程序连接到 mongodb 数据库?
【发布时间】:2019-11-08 15:39:17
【问题描述】:

我无法将部署到 Heroku 的 Node.js 应用程序与 MongoDB 数据库连接起来。它在 localhost 上运行良好,但在 Heroku 上却不行。

在我的日志中,我看到了这个:

MongoNetworkError: failed to connect to server [authproject-shard-00-01-ybey8.mongodb.net:27017] on first connect [MongoNetworkError: connection 4 to authproject-shard-00-01-ybey8.mongodb.net:27017 closed]


custom-environment-variables.json:

{
  "db": "Auth_db"
}

default.json:

{
  "db": "mongodb://localhost/user"
}

db.js:

  const db = config.get("db");
  mongoose
    .connect(db)
    .then(() => console.log("connected to mongodb.."))
    .catch(err => console.error("could not connect to mongodb", err));
};

【问题讨论】:

    标签: node.js mongodb heroku


    【解决方案1】:

    您需要在 Heroku 应用程序中配置环境变量。

    在控制台中运行:

    heroku config:set MONGODB_URI='urlOfYourMongoDatabase'
    

    然后像这样升级你的 db.js:

    const mongoose = require('mongoose')
    
    mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/TodoApp', { useNewUrlParser: true })
            .then(connect => console.log('connected to mongodb..'))
            .catch(e => console.log('could not connect to mongodb', e))
    
    module.exports = {mongoose}
    

    祝你好运!

    【讨论】:

    • 这里的 MONGODB_URI 是什么?
    • 你的 mongodb 的 SRV url,即 mongodb://username:password@some url
    【解决方案2】:

    通过在 mongodb 的网络访问中设置允许从任何地方访问来允许在 mongodb 中的 heroku ip 访问。 这有效, 但不确定允许从任何地方访问是否安全。

    【讨论】:

      【解决方案3】:

      在 2021 年,导航到您在 Heroku 中的应用。点击“设置”菜单。打开后,单击“Config Vars”展开它。像在 .env 文件中一样填写 KEY 和 VALUE 字段。假设您的 .env 中有 DB_HOST=url/of/your/mongodb。 KEY 是 DB_HOST,VALUE 是 url/of/your/mongodb。现在点击添加按钮。你可以走了。

      【讨论】:

        猜你喜欢
        • 2020-09-29
        • 2019-04-29
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 2019-10-12
        • 2020-04-10
        • 1970-01-01
        相关资源
        最近更新 更多