Heroku无法连接到MongoDB Atlas

时间:2020-04-07 10:45:54

标签: node.js mongodb heroku mongodb-atlas

我知道以前曾有人问过这个问题,但是我真的没有在任何地方找到这个问题的答案。

我已成功将Node.js应用程序部署到Heroku,但无法连接到MongoDB Atlas集群。 这是我得到的错误:

2020-04-07T10:39:20.723516+00:00 app[web.1]: Connection failed... MongooseError [MongooseServerSelectionError]: connection <monitor> to 54.72.180.237:27017 closed
2020-04-07T10:39:20.723526+00:00 app[web.1]:     at new MongooseServerSelectionError (/app/node_modules/mongoose/lib/error/serverSelection.js:22:11)
2020-04-07T10:39:20.723527+00:00 app[web.1]:     at NativeConnection.Connection.openUri (/app/node_modules/mongoose/lib/connection.js:808:32)
2020-04-07T10:39:20.723529+00:00 app[web.1]:     at Mongoose.connect (/app/node_modules/mongoose/lib/index.js:333:15)
2020-04-07T10:39:20.723530+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:22:4)
2020-04-07T10:39:20.723531+00:00 app[web.1]:     at Module._compile (internal/modules/cjs/loader.js:959:30)
2020-04-07T10:39:20.723531+00:00 app[web.1]:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
2020-04-07T10:39:20.723532+00:00 app[web.1]:     at Module.load (internal/modules/cjs/loader.js:815:32)
2020-04-07T10:39:20.723532+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:727:14)
2020-04-07T10:39:20.723532+00:00 app[web.1]:     at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
2020-04-07T10:39:20.723533+00:00 app[web.1]:     at internal/main/run_main_module.js:17:11 {
2020-04-07T10:39:20.723533+00:00 app[web.1]:   message: 'connection <monitor> to 54.72.180.237:27017 closed',
2020-04-07T10:39:20.723534+00:00 app[web.1]:   name: 'MongooseServerSelectionError',
2020-04-07T10:39:20.723534+00:00 app[web.1]:   reason: TopologyDescription {
2020-04-07T10:39:20.723535+00:00 app[web.1]:     type: 'ReplicaSetNoPrimary',
2020-04-07T10:39:20.723535+00:00 app[web.1]:     setName: null,
2020-04-07T10:39:20.723535+00:00 app[web.1]:     maxSetVersion: null,
2020-04-07T10:39:20.723536+00:00 app[web.1]:     maxElectionId: null,
2020-04-07T10:39:20.723536+00:00 app[web.1]:     servers: Map {
2020-04-07T10:39:20.723537+00:00 app[web.1]:       'milenskiblog-shard-00-00-lkwi4.mongodb.net:27017' => [ServerDescription],
2020-04-07T10:39:20.723537+00:00 app[web.1]:       'milenskiblog-shard-00-01-lkwi4.mongodb.net:27017' => [ServerDescription],
2020-04-07T10:39:20.723538+00:00 app[web.1]:       'milenskiblog-shard-00-02-lkwi4.mongodb.net:27017' => [ServerDescription]
2020-04-07T10:39:20.723539+00:00 app[web.1]:     },
2020-04-07T10:39:20.723539+00:00 app[web.1]:     stale: false,
2020-04-07T10:39:20.723539+00:00 app[web.1]:     compatible: true,
2020-04-07T10:39:20.723540+00:00 app[web.1]:     compatibilityError: null,
2020-04-07T10:39:20.723540+00:00 app[web.1]:     logicalSessionTimeoutMinutes: null,
2020-04-07T10:39:20.723541+00:00 app[web.1]:     heartbeatFrequencyMS: 10000,
2020-04-07T10:39:20.723541+00:00 app[web.1]:     localThresholdMS: 15,
2020-04-07T10:39:20.723541+00:00 app[web.1]:     commonWireVersion: null
2020-04-07T10:39:20.723542+00:00 app[web.1]:   },
2020-04-07T10:39:20.723542+00:00 app[web.1]:   [Symbol(mongoErrorContextSymbol)]: {}
2020-04-07T10:39:20.723542+00:00 app[web.1]: }

这是我连接到MongoDB的方式:

mongoose
  .connect(process.env.blog_db, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() => console.log("Connected to MongoDB..."))
  .catch((err) => console.error(`Connection failed...`, err));

这是我的环境变量(我在Heroku中将其设置为完全相同)。enter image description here

奇怪的是,如果我运行nodemon index.js,则该应用程序可以完美运行,并且可以立即连接到MongoDB Atlas集群,但是部署的heroku应用程序似乎没有连接到数据库。 我真的没有主意,我在这里拔头发,所以请如果以前有人解决过这个问题,我需要您的帮助!

谢谢!

0 个答案:

没有答案