Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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/1/amazon-web-services/12.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
Node.js Cloud Foundry MongoDB错误恢复_Node.js_Mongodb_Cloud Foundry_Swisscomdev - Fatal编程技术网

Node.js Cloud Foundry MongoDB错误恢复

Node.js Cloud Foundry MongoDB错误恢复,node.js,mongodb,cloud-foundry,swisscomdev,Node.js,Mongodb,Cloud Foundry,Swisscomdev,我想在Cloud Foundry上部署Node.JS应用程序。 我遵循以下步骤: 在package.json中添加引擎部分 我创建manifest.yml 我在install.js中使用了以下连接: 以及app.js中的以下内容: 通过命令行连接到SCAPP,并使用cf push推送应用程序 因为云上没有MongoDB,所以我有一个错误 我在云上构建MOngoDB服务,并通过web GUI直接绑定应用程序 在gui上,我单击我的应用程序的重新设置按钮 我有错误 我在清单中添加了服务mongoD

我想在Cloud Foundry上部署Node.JS应用程序。 我遵循以下步骤:

  • 在package.json中添加引擎部分

  • 我创建manifest.yml

  • 我在install.js中使用了以下连接:
  • 以及app.js中的以下内容:
  • 通过命令行连接到SCAPP,并使用cf push推送应用程序

  • 因为云上没有MongoDB,所以我有一个错误

  • 我在云上构建MOngoDB服务,并通过web GUI直接绑定应用程序

  • 在gui上,我单击我的应用程序的重新设置按钮
  • 我有错误
  • 我在清单中添加了服务mongoDB,并推送我的应用程序
  • 仍然与第9点中的错误相同

  • 我试图在install.js中更改连接


  • 感谢您的帮助

    当您对
    VCAP\u服务
    进行解析时(您会得到一个包含主机名和端口的URL),我强烈建议您利用其中一个现有库进行进一步的项目:

    不过,请确保您的mongo凭据的解析工作正常(
    cf e${app_name}
    ,查找VCAP_服务,手动比较)

    如果您想用独立代码测试您的服务,下面是一个示例应用程序,我很快将其组合起来,用于测试绑定到它的所有mongodb服务:

    package.json:

    {
      "name": "mongo-tester",
      "version": "1.0.0",
      "description": "tests all mongodbs via VCAP_SERVICES",
      "main": "server.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "Michael Erne",
      "license": "MIT",
      "dependencies": {
        "async": "^2.5.0",
        "cfenv": "^1.0.4",
        "lodash": "^4.17.4",
        "mongodb": "^2.2.31"
      }
    }
    
    server.js:

    var cfenv = require('cfenv'),
        _ = require('lodash'),
        http = require('http'),
        async = require('async'),
        MongoClient = require('mongodb').MongoClient
    
    
    var appEnv = cfenv.getAppEnv();
    
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Return something for CF Health Check\n');
    }).listen(appEnv.port);
    
    var services = _.values(appEnv.getServices());
    var mongodbs = _.filter(services, { label: 'mongodb' });
    
    async.eachLimit(mongodbs, 1, function (m, callback) {
      MongoClient.connect(m.credentials.database_uri, function (err, db) {
        if (err) {
          return callback(err);
        }
        db.collection("debug").insertOne({"test": true}, function(err, res) {
          if (err) return callback(err);
          console.log("document inserted successfully into " + m.credentials.database_uri);
          db.close();
          return callback(null);
        });
      });
    }, function (err) {
        if (err) {
          console.log(err.stack || err);
          console.log('---> mongodb connection failed <---');
          return;
        }
        console.log('---> connection to all BOUND mongodb successful <---');
    });
    
    var cfenv=require('cfenv'),
    _=需要('lodash'),
    http=require('http'),
    async=require('async'),
    MongoClient=require('mongodb')。MongoClient
    var appEnv=cfenv.getAppEnv();
    http.createServer(函数(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Return something for CF Health Check\n');
    }).监听(显示端口);
    var services=u2;.values(appEnv.getServices());
    var mongodbs=551;.filter(服务,{label:'mongodb'});
    eachLimit(mongodbs,1,函数(m,回调){
    MongoClient.connect(m.credentials.database_uri,函数(err,db){
    如果(错误){
    返回回调(err);
    }
    db.collection(“debug”).insertOne({“test”:true},函数(err,res){
    if(err)返回回调(err);
    log(“文档成功插入”+m.credentials.database_uri);
    db.close();
    返回回调(null);
    });
    });
    },函数(err){
    如果(错误){
    console.log(err.stack | | err);
    
    console.log('-->mongodb连接失败连接到所有绑定的mongodb成功,而您对
    VCAP_服务的解析似乎可以正常工作(您会得到一个包含主机名和端口的URL),我强烈建议在进一步的项目中利用现有的库之一:
    

    不过,请确保您的mongo凭据的解析工作正常(
    cf e${app_name}
    ,查找VCAP_服务,手动比较)

    如果您想用独立代码测试您的服务,下面是一个示例应用程序,我很快将其组合起来,用于测试绑定到它的所有mongodb服务:

    package.json:

    {
      "name": "mongo-tester",
      "version": "1.0.0",
      "description": "tests all mongodbs via VCAP_SERVICES",
      "main": "server.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "Michael Erne",
      "license": "MIT",
      "dependencies": {
        "async": "^2.5.0",
        "cfenv": "^1.0.4",
        "lodash": "^4.17.4",
        "mongodb": "^2.2.31"
      }
    }
    
    server.js:

    var cfenv = require('cfenv'),
        _ = require('lodash'),
        http = require('http'),
        async = require('async'),
        MongoClient = require('mongodb').MongoClient
    
    
    var appEnv = cfenv.getAppEnv();
    
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Return something for CF Health Check\n');
    }).listen(appEnv.port);
    
    var services = _.values(appEnv.getServices());
    var mongodbs = _.filter(services, { label: 'mongodb' });
    
    async.eachLimit(mongodbs, 1, function (m, callback) {
      MongoClient.connect(m.credentials.database_uri, function (err, db) {
        if (err) {
          return callback(err);
        }
        db.collection("debug").insertOne({"test": true}, function(err, res) {
          if (err) return callback(err);
          console.log("document inserted successfully into " + m.credentials.database_uri);
          db.close();
          return callback(null);
        });
      });
    }, function (err) {
        if (err) {
          console.log(err.stack || err);
          console.log('---> mongodb connection failed <---');
          return;
        }
        console.log('---> connection to all BOUND mongodb successful <---');
    });
    
    var cfenv=require('cfenv'),
    _=需要('lodash'),
    http=require('http'),
    async=require('async'),
    MongoClient=require('mongodb')。MongoClient
    var appEnv=cfenv.getAppEnv();
    http.createServer(函数(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Return something for CF Health Check\n');
    }).监听(显示端口);
    var services=u2;.values(appEnv.getServices());
    var mongodbs=551;.filter(服务,{label:'mongodb'});
    eachLimit(mongodbs,1,函数(m,回调){
    MongoClient.connect(m.credentials.database_uri,函数(err,db){
    如果(错误){
    返回回调(err);
    }
    db.collection(“debug”).insertOne({“test”:true},函数(err,res){
    if(err)返回回调(err);
    log(“文档成功插入”+m.credentials.database_uri);
    db.close();
    返回回调(null);
    });
    });
    },函数(err){
    如果(错误){
    console.log(err.stack | | err);
    
    console.log('-->mongodb连接失败连接到所有绑定的mongodb成功最后我们发现了问题。cloud foundry在安装后阶段不允许访问mongodb服务。因此我们将其更改为预启动,并成功运行。
    感谢您的帮助

    我们终于找到了问题所在。cloud foundry在安装后阶段不允许访问MongoDB服务。因此,我们将其更改为预启动,并成功运行。
    感谢您的帮助

    您在内部应用程序Cloud 2017-10-03T06:26:09Z上创建了容器,我可以确认容器是否正常。请发布有关您的代码和设置(应用程序)的更多详细信息感谢您的支持。我没有编写该应用程序。我知道它不是为了部署在云端上而设计的,并且该应用程序在本地计算机上可以不经修改地工作。对于代码,我不知道您需要更准确的信息。我们可以在下午讨论吗?请写下您所做的每一步(清单,商业应用程序产品来源,推送命令)发送至Scapp Internal,INI-INO-SWD。以下信息太少,无法帮助您在内部应用程序Cloud 2017-10-03T06:26:09Z上创建容器,我可以确认容器是否正常。请发布有关代码和设置(应用程序)的更多详细信息感谢您的支持。我没有编写该应用程序。我知道它不是为了部署在云端上而设计的,并且该应用程序在本地计算机上可以不经修改地工作。对于代码,我不知道您需要更准确的信息。我们可以在下午讨论吗?请写下您所做的每一步(清单,商业应用程序产品来源,推送命令)到Scapp Internal,INI-INO-SWD。这里的信息太少,无法帮助您感谢您的评论。我已经测试并返回了“-->连接到所有绑定mongodb成功的一个问题。是否允许在install.js文件中连接到mongodb?还是仅在server.js(我的例子是app.js)中连接到mongodb.正如您所看到的,我的install.js是c
    Database connection responded with: failed to connect to server 
    [2xtorvw9ys7tg9pc.service.consul:49642] on first connect [MongoError: 
    connect ECONNREFUSED 10.98.250.54:49642]
    
    {
      "name": "mongo-tester",
      "version": "1.0.0",
      "description": "tests all mongodbs via VCAP_SERVICES",
      "main": "server.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "Michael Erne",
      "license": "MIT",
      "dependencies": {
        "async": "^2.5.0",
        "cfenv": "^1.0.4",
        "lodash": "^4.17.4",
        "mongodb": "^2.2.31"
      }
    }
    
    var cfenv = require('cfenv'),
        _ = require('lodash'),
        http = require('http'),
        async = require('async'),
        MongoClient = require('mongodb').MongoClient
    
    
    var appEnv = cfenv.getAppEnv();
    
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Return something for CF Health Check\n');
    }).listen(appEnv.port);
    
    var services = _.values(appEnv.getServices());
    var mongodbs = _.filter(services, { label: 'mongodb' });
    
    async.eachLimit(mongodbs, 1, function (m, callback) {
      MongoClient.connect(m.credentials.database_uri, function (err, db) {
        if (err) {
          return callback(err);
        }
        db.collection("debug").insertOne({"test": true}, function(err, res) {
          if (err) return callback(err);
          console.log("document inserted successfully into " + m.credentials.database_uri);
          db.close();
          return callback(null);
        });
      });
    }, function (err) {
        if (err) {
          console.log(err.stack || err);
          console.log('---> mongodb connection failed <---');
          return;
        }
        console.log('---> connection to all BOUND mongodb successful <---');
    });
    
    document inserted successfully into mongodb://xxx:yyy@zzz.service.consul:1337/databaseName
    ---> connection to all BOUND mongodb successful <---