我知道以前曾有人问过这个问题,但是我真的没有在任何地方找到这个问题的答案。
我已成功将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));
奇怪的是,如果我运行nodemon index.js,则该应用程序可以完美运行,并且可以立即连接到MongoDB Atlas集群,但是部署的heroku应用程序似乎没有连接到数据库。 我真的没有主意,我在这里拔头发,所以请如果以前有人解决过这个问题,我需要您的帮助!
谢谢!