Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MongoLab在Heroku上部署Node.js应用程序时出现问题_Node.js_Mongodb_Heroku_Express_Mlab - Fatal编程技术网

使用MongoLab在Heroku上部署Node.js应用程序时出现问题

使用MongoLab在Heroku上部署Node.js应用程序时出现问题,node.js,mongodb,heroku,express,mlab,Node.js,Mongodb,Heroku,Express,Mlab,我正在尝试向Heroku部署一个非常简单的应用程序。该应用程序的代码可以在Ray Wenderlich的网站上找到,在这里:每当我试图让Heroku编译代码时,都会遇到相同的错误 var mongoHost = "mongodb://username:password@ds041140.mongolab.com:41140/heroku_app23491233"; var mongoPort = 41140; var collectionDriver; var mongoClient = n

我正在尝试向Heroku部署一个非常简单的应用程序。该应用程序的代码可以在Ray Wenderlich的网站上找到,在这里:每当我试图让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日志时,我得到的错误来自上面的
if(!mongoClient)

app[web.1]: Error! Exiting... Must start MongoDB first
我确信问题出在我试图连接到MongoLab数据库的某个地方。我已经从MongoLab复制了URI,并且创建了一个具有正确凭据的用户

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

谢谢。

基于,我最好的猜测是,这是因为
服务器
构造函数希望第一个参数只包含主机名(对于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);
    });
});

希望这有帮助