MongoDB Atlas 连接在 Heroku for NodeJS 上不起作用

Posted

技术标签:

【中文标题】MongoDB Atlas 连接在 Heroku for NodeJS 上不起作用【英文标题】:MongoDB Atlas connection not working on Heroku for NodeJS 【发布时间】:2021-04-05 09:50:18 【问题描述】:

我在 Heroku 上不断收到此错误:

UnhandledPromiseRejectionWarning: MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/

我已经将 0.0.0.0 和我自己的 IP 地址添加到 Atlas。

这就是我的连接方式(使用 Mongoose):

// link mongoose
mongoose.connect(process.env.DB_LINK, 
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
);

我已经将 DB_LINK 添加到 Heroku 上的配置变量中。

在 localhost 上一切正常。我不确定为什么这不起作用。最后我也得到了这个错误:

at=error code=H12 desc="Request timeout"

感谢您的帮助!

【问题讨论】:

我没有使用 Atlas + Heroku,但 IME 数据库连接超时的最常见原因是网络层的安全规则。您说您已将 0.0.0.0 和您自己的 IP 地址添加到 Atlas,因此它可以在您的本地计算机上运行是有道理的,但是您是否知道如何添加 Heroku 将用于连接的任何域/IP 范围阿特拉斯? @JimJ 我曾认为 0.0.0.0 将允许任何 IP 加入(因为当我选择允许 Atlas 上的所有 IP 时输入的内容)。 Stack Overflow 上的其他答案也说允许 0.0.0.0 但它对我不起作用。 好的,我查看了 Atlas 文档,它说特定 IP(如 0.0.0.0)和 CIDR 范围的地址(0.0.0.0/0)对于安全规则都是可接受的。确定“允许任何 IP 加入”是否真的为真的一种方法是删除您的特定本地 IP 地址,然后尝试从本地计算机连接。你试过吗? @JimJ 感谢您对此进行调查。当我删除自己的 IP 时,它确实在 localhost 上工作,所以我认为这不是问题。 没关系,现在可以了。我想我只需要给它时间。谢谢! 【参考方案1】:

好的,我会按照@Jack 评论部分的说明给出更详细的答案。

1.转到网络访问部分

2。点击右侧的add IP address按钮

3.点击允许从任何地方访问。

【讨论】:

以上是关于MongoDB Atlas 连接在 Heroku for NodeJS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 Heroku App 连接到 Atlas MongoDB 云服务

尝试将 Heroku 连接到 Atlas MongoDB 时出现问题

以前部署到 Heroku 时可以工作的 KeystoneJS V4 应用程序现在停止工作 - MongoDB Atlas

Prisma 1 + MongoDB Atlas 部署到 Heroku 返回错误 404

Mongodb atlas + node.js 在本地工作,但在推送到 Heroku 时停止

在 Zapier 上连接 Mongodb Atlas