首页 > 解决方案 > 通过 Heroku 部署时,本地 MongoDB 将无法连接

问题描述

错误日志之一是: MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017

我在 Node.js 中使用的 dbURI:

const dbURI = process.env.MONGODB_URI || 'mongodb://localhost:27017/the-little-helper';

我的问题是,我需要使用云服务器(即 MongoDB Atlas)来部署我的 Web 应用程序还是可以使用本地服务器来存储数据库?

注意:Heroku 是我目前用来部署的,请随时为其他类似 heroku 的站点留下建议。

此外,如果前面的语句没有足够的信息,这里是所有错误的日志:

2021-05-24T19:04:50.910961+00:00 heroku[web.1]: Starting process with command `npm start`
2021-05-24T19:04:54.247315+00:00 app[web.1]: 
2021-05-24T19:04:54.247332+00:00 app[web.1]: > profile@1.0.0 start /app
2021-05-24T19:04:54.247332+00:00 app[web.1]: > node Node.js
2021-05-24T19:04:54.247333+00:00 app[web.1]:
2021-05-24T19:04:54.947931+00:00 app[web.1]: Connection success!
2021-05-24T19:04:54.954409+00:00 app[web.1]: Warning: connect.session() MemoryStore is not
2021-05-24T19:04:54.954411+00:00 app[web.1]: designed for a production environment, as it will leak
2021-05-24T19:04:54.954411+00:00 app[web.1]: memory, and will not scale past a single process.
2021-05-24T19:05:24.952175+00:00 app[web.1]: MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
2021-05-24T19:05:24.952186+00:00 app[web.1]: at NativeConnection.Connection.openUri (/app/node_modules/mongoose/lib/connection.js:846:32)
2021-05-24T19:05:24.952186+00:00 app[web.1]: at /app/node_modules/mongoose/lib/index.js:350:10
2021-05-24T19:05:24.952187+00:00 app[web.1]: at /app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:5
2021-05-24T19:05:24.952187+00:00 app[web.1]: at new Promise (<anonymous>)
2021-05-24T19:05:24.952188+00:00 app[web.1]: at promiseOrCallback (/app/node_modules/mongoose/lib/helpers/promiseOrCallback.js:30:10)
2021-05-24T19:05:24.952188+00:00 app[web.1]: at Mongoose._promiseOrCallback (/app/node_modules/mongoose/lib/index.js:1154:10)
2021-05-24T19:05:24.952189+00:00 app[web.1]: at Mongoose.connect (/app/node_modules/mongoose/lib/index.js:349:20)
2021-05-24T19:05:24.952189+00:00 app[web.1]: at Object.<anonymous> (/app/Node.js:17:10)

标签: node.jsmongodbherokumongoosedeployment

解决方案


是的,您必须需要像 Atlas 这样的云基础 mongodb 集群,并将云基础 mongodb URI 添加到您的 heroku env 变量中才能运行您的应用程序而不会出现任何错误。


推荐阅读