从 Heroku 连接到 MongoDb 时应用程序超时

Posted

技术标签:

【中文标题】从 Heroku 连接到 MongoDb 时应用程序超时【英文标题】:application times out when connecting to MongoLab from Heroku 【发布时间】:2012-03-29 00:52:01 【问题描述】:

我在 Heroku 上托管一个 node.js 应用程序,并尝试使用节点模块 node-mongodb-native 连接到 MongoLab。我的应用程序从连接到 MongoLab 的 localhost 运行时工作正常,但在部署到 Heroku 后,我收到应用程序错误 H12(请求超时)。

示例代码:

app.get('/', function(req, res) 
    require('mongodb').connect(mongourl, function(err, conn)
        conn.collection('mycollection', function(err, coll)
            coll.find().toArray(function(error, results) 
                if(error) console.log(error)
                else 
                    res.send(util.inspect(results));
                
            );
        );
    );
);

我需要从 Heroku 传递给 .connect() 的其他选项吗?

非常感谢任何建议。谢谢!

【问题讨论】:

mongourl 返回的值是否正确? 您好,我在 MongoLab,很乐意提供帮助。 +1 Neil 所说的 .. 有兴趣知道 mongourl 的值——自然而然地屏蔽掉任何密码。 嗨,尼尔,据我所知,蒙古人正在返回正确的值。嗨@dampier,这里是mongourl:mongodb://heroku_app3138529:mypassword@ds031407.mongolab.com:31407/heroku_app3138529 奇怪的是我无法弄清楚当我从本地环境运行应用程序时它可以工作,但不是来自 Heroku... 【参考方案1】:

如果其他人有这个问题:

现在可以选择您希望在 Heroku 上运行的节点版本。因此,通过将以下代码添加到我的 package.json 中,我能够毫无问题地连接到 MongoLab:

"engines": 
  "node": "0.6.12"
, "npm": "1.1.4"

谢谢。

【讨论】:

出了什么问题?切换到旧版本的 node 解决了吗? 我对此也不清楚。我有同样的问题,虽然我在 package.json 中设置了我的节点值(在我的情况下为“0.10.x”)所以如果这是某种节点版本问题,我会很感激。

以上是关于从 Heroku 连接到 MongoDb 时应用程序超时的主要内容,如果未能解决你的问题,请参考以下文章

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

Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB

Node.js 无法从 Heroku 连接到 mongodb 3 到 Mongolab:SCRAM-SHA-1

使用 mongoose 和 Fixie(Heroku 插件)连接到 mongodb

部署到Heroku后,Localhost未连接到mongodb

使用mongoose和Fixie(Heroku附加组件)连接到mongodb