我无法将部署到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));
};
4条答案
按热度按时间6mw9ycah1#
您需要在Heroku应用程序中配置一个环境变量。
在控制台中运行:
然后像这样升级你的db.js:
祝你好运!
aurhwmvo2#
通过在mongodb的网络访问中设置allow access from anywhere来允许mongodb中的heroku ip访问。这是可行的,但不确定允许从任何地方访问有多安全。
w1jd8yoj3#
2021年,在Heroku中导航到您的应用程序。点击“设置”菜单。一旦它打开,通过点击它展开“配置变量”。按照.env文件中的格式填写KEY和VALUE字段。假设你的. env中有DB_HOST=url/of/your/mongodb。KEY是DB_HOST,VALUE是url/of/your/mongodb。现在点击添加按钮。你可以走了。
sycxhyv74#
“出于某种原因,使用来自Driver Node.js 3.0或更高版本的MongoDB连接字符串,而不是在其末尾使用'&w=majority',会导致成功部署。再说一次,我不确定这是否安全或最佳,但是,它正在起作用。“
Source