【问题标题】:Problems Deploying a Node.js app on Heroku Using MongoLab使用 MongoLab 在 Heroku 上部署 Node.js 应用程序的问题
【发布时间】:2014-11-20 22:17:15
【问题描述】:

我正在尝试将一个非常简单的应用程序部署到 Heroku。该应用程序的代码可以在 Ray Wenderlich 的网站上找到,这里是:http://www.raywenderlich.com/61078/write-simple-node-jsmongodb-web-service-ios-app 每当我尝试让 Heroku 编译代码时,都会遇到同样的错误......

var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233";
var mongoPort = 41140; 
var collectionDriver;

var mongoClient = new MongoClient(new Server(mongoHost, mongoPort)); //B
mongoClient.open(function(err, mongoClient) { //C
  if (!mongoClient) {
      console.error("Error! Exiting... Must start MongoDB first");
      process.exit(1); //D
  }
  var db = mongoClient.db("heroku_app23491233");  // E
  collectionDriver = new CollectionDriver(db); //F
});

当我输入heroku logs 时,我得到的错误来自上面的if (!mongoClient)...

app[web.1]: Error! Exiting... Must start MongoDB first

我确定问题出在我尝试连接到 MongoLab 数据库的某个地方。我已经从 MongoLab 复制了 URI,并使用正确的凭据创建了一个用户。

我可以使用非常相似的代码很好地连接到 localhost,所以我不确定这个示例中出了什么问题。

谢谢。

【问题讨论】:

    标签: node.js mongodb heroku express mlab


    【解决方案1】:

    基于the docs,我最好的猜测是这是因为Server 构造函数期望第一个参数只包含主机名(对于您的MongoLab,ds041140.mongolab.com)。但是,我认为您可以将连接字符串传递给MongoClient.connect

    // Make sure to replace username and password with the proper values.
    var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233";
    
    MongoClient.connect(mongoHost, function(err, db) {
        if (err) return console.log(err);
    
        db.collection('mongoclient_test').update({a:1}, {b:1}, {upsert:true}, function(err, result) {
            db.close();
    
            if (err) return console.log(err);
    
            console.log('Okay', result);
        });
    });
    

    Documentation Page For MongoClient

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2016-07-24
      • 2016-10-23
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多