【发布时间】:2020-03-22 00:41:30
【问题描述】:
我正在尝试将我的节点应用程序部署到 Heroku。
我已经添加了 MLab MongoDB 插件并设置了配置变量
$ heroku config
=== thevoyageapp Config Vars
MONGODB_URI: mongodb://heroku_f80ngvbz:btt04p7erog80@ds.mlab.com:11/herokgvbz
并已将 process.env.MONGODB_URI 添加到我的 mongo 连接
const mongoose = require('mongoose');
let url = process.env.MONGODB_URI || 'mongodb://localhost/trip';
mongoose.connect(url, { useMongoClient: true });
但我仍然收到此错误:
2018-01-23T06:00:15.722831+00:00 heroku[web.1]: Starting process with command `node server/index.js`
2018-01-23T06:00:17.808211+00:00 app[web.1]: mongodb://heroku_f80ngvbz:btt04p7erog80cot3ufp1@ds.mlab.com:11/heroku_f80ngvbz
2018-01-23T06:00:17.807864+00:00 app[web.1]: listening on port 3000 ^
2018-01-23T06:00:17.835657+00:00 app[web.1]: MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
2018-01-23T06:00:17.835658+00:00 app[web.1]: at Pool.<anonymous> (/app/node_modules/mongodb-core/lib/topologies/server.js:336:35)
2018-01-23T06:00:17.835659+00:00 app[web.1]: at emitOne (events.js:116:13)
2018-01-23T06:00:17.835663+00:00 app[web.1]: at Connection.emit (events.js:214:7)
2018-01-23T06:00:17.835660+00:00 app[web.1]: at Pool.emit (events.js:211:7)
2018-01-23T06:00:17.835661+00:00 app[web.1]: at Object.onceWrapper (events.js:317:30)
2018-01-23T06:00:17.835661+00:00 app[web.1]: at Connection.<anonymous> (/app/node_modules/mongodb-core/lib/connection/pool.js:280:12)
2018-01-23T06:00:17.835664+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:189:49)
2018-01-23T06:00:17.835662+00:00 app[web.1]: at emitTwo (events.js:126:13)
2018-01-23T06:00:17.835664+00:00 app[web.1]: at Object.onceWrapper (events.js:315:30)
2018-01-23T06:00:17.835665+00:00 app[web.1]: at emitOne (events.js:116:13)
2018-01-23T06:00:17.835666+00:00 app[web.1]: at Socket.emit (events.js:211:7)
2018-01-23T06:00:17.835667+00:00 app[web.1]: at emitErrorNT (internal/streams/destroy.js:64:8)
2018-01-23T06:00:17.835668+00:00 app[web.1]: at _combinedTickCallback (internal/process/next_tick.js:138:11)
2018-01-23T06:00:17.835668+00:00 app[web.1]: at process._tickCallback (internal/process/next_tick.js:180:9)
2018-01-23T06:00:17.940249+00:00 heroku[web.1]: State changed from starting to crashed
2018-01-23T06:00:17.926212+00:00 heroku[web.1]: Process exited with status 1
知道可能是什么问题吗?
【问题讨论】:
-
从日志中,它似乎无法从 process.env.MONGODB_URI 获取值并回退到 localhost。
-
您好,您已在连接字符串中将用户名和密码发布到数据库。请确保尽快重置您的数据库密码。 (将来,您应该确保在公开发布之前从连接字符串中删除您的用户名和密码)
-
我同意道格的观点。也许您没有提交最近的更改,您将 url 设置为
process.env.MONGODB_URI或者您在代码中的其他地方连接到 localhost? -
如果您查看错误的第 2 行,我会记录 process.env.MONGODB_URI 的控制台日志,它会显示正确的 mongodb uri。
-
您的代码未使用该 URI 进行连接。它正在尝试连接到本地主机。你能粘贴你的整个 server/index.js 文件吗?
标签: javascript mongodb heroku mongoose mlab