“请求超时” H12 Heroku错误导致访问MongoDB Atlas

时间:2020-03-29 10:19:04

标签: node.js mongodb heroku mongodb-atlas

这个问题似乎很普遍,但我尝试了几件事,但仍然收到此错误。

好的,因此我试图在MonokuDB Atlas上使用我的数据库在Heroku上的应用程序上进行部署,但是当我尝试注册或登录POST请求时,我会在Heroku日志中收到此消息:

2020-03-29T09:54:50.197717+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/users/register" host=sleepy-beach-03876.herokuapp.com request_id=87810d90-3e72-4ff7-929e-77157f1b4a12 fwd="xxx.xxx.xxx.xxx" dyno=web.1 connect=0ms service=30001ms status=503 bytes=0 protocol=https

我尝试过的事情

  • 增加连接超时时间
  • 仔细检查我的IP地址是否已列入白名单
  • 仔细检查URI是否正确
  • 使用Heroku Config vars

这是URI
mongoURI : 'mongodb+srv://xxx:xxxxxxxx@clusterftr-wrdqy.mongodb.net/test?retryWrites=true&w=majority'

我已经尝试过了

mongoose.connect(db.mongoURI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
})
.then(() => console.log(`MongoDB connected... ${db.mongoURI}`))
.catch(err => console.log(err + db.mongoURI));

还有这个

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://xxx:xxxxxxxx@clusterftr-wrdqy.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("users");
  client.close();
});


请注意,这是我的第一个StackOverflow帖子,也是我的第一个Node项目之一,因此,请理解并向我发送一些反馈:)

2 个答案:

答案 0 :(得分:2)

好的,如果有人遇到相同的问题,我会回答我自己的帖子。

我只是忘了在白名单中添加Heroku IP,以便他们可以访问数据库...

答案 1 :(得分:0)

不知道这有多相关,但是我遇到了H12 - Request Timeout错误。很有可能是因为我的.env变量在Heroku中无法访问。

在我的应用程序的设置菜单中,我将它们添加到Config Vars部分中,现在可以连接了。