我无法将部署到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));
};
答案 0 :(得分:0)
您需要在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}
祝你好运!
答案 1 :(得分:0)
通过在 mongodb 的网络访问中的任何地方设置允许访问,允许在 mongodb 中访问 heroku ip。 这有效, 但不确定允许从任何地方访问它的安全性如何。
答案 2 :(得分:0)
在 2021 年,在 Heroku 中导航到您的应用。单击“设置”菜单。打开后,单击它展开“配置变量”。像在 .env 文件中一样填写 KEY 和 VALUE 字段。假设您的 .env 中有 DB_HOST=url/of/your/mongodb。 KEY 是 DB_HOST,VALUE 是 url/of/your/mongodb。现在点击添加按钮。你可以走了。