-1

以下来自我的 cf push 的日志转储:

2014-09-09T15:47:35.92+0530 [App/0] ERR 2014-09-09T15:47:35.97+0530 [DEA] OUT 实例(索引 0)无法开始接受连接 2014-09-09T15:47: 55.71+0530 [DEA] OUT 使用 guid 20dba222-e0e6-453c-96a9-429940bc7002 启动应用程序实例(索引 0) 2014-09-09T15:47:57.59+0530 [API] OUT 应用程序实例以 guid 20dba222-e0e6-453c 退出-96a9-429940bc7002 有效载荷:{"cc_partition"=>"default", "droplet"=>"20dba222-e0e6-453c-96a9-429940bc7002", "version"=>"832505e6-a95d-4696-910e-a8d4a74a7005", "instance"=>"4ff487a75a674aa79b234cc1bd8f9a3d", "index"=>0, "reason"=>"CRASHED", "exit_status"=>0, "exit_description"=>"应用程序实例退出", "crash_timestamp"=>1410257878} 2014-09-09T

这就是我的 manifest.yml 文件的样子:

applications:
- name: nodetestSDB
  memory: 128M
  command: node app.js
  services:
  - mongodbnode

这就是我的 package.json 文件的样子:

{
  "name": "nodetest2",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.8.6",
    "body-parser": "~1.6.6",
    "cookie-parser": "~1.3.2",
    "morgan": "~1.2.3",
    "serve-favicon": "~2.0.1",
    "debug": "~1.0.4",
    "jade": "~1.5.0",
    "mongodb": "*",
    "monk": "*"
  }
}

app.js 中的环境变量:

if (process.env.VCAP_SERVICES) {

      var env = JSON.parse(process.env.VCAP_SERVICES);
      if (env['mongodb-2.2']) {
        var mongo = env['mongodb-2.2'][0]['credentials'];
      }

    var db = monk(mongo.url);
}
4

3 回答 3

1

请在我的博客中查看有关将 MongoDB 与 Bluemix 结合使用的文章。您还可以在 GitHub abd Devops 中查看代码。很可能您没有正确解析 VCAP_SERVICES。我使用过 Node.js 和 NodeExpress

http://gigadom.wordpress.com/2014/07/27/a-bluemix-recipe-with-mongodb-and-node-js/ http://gigadom.wordpress.com/2014/08/04/elements- of-crud-with-nodeexpress-and-mongodb-using-enide-studio/ http://gigadom.wordpress.com/2014/08/07/spicing-up-a-ibm-bluemix-cloud-app-with- mongodb-and-nodeexpress/

问候 Ganesh

于 2014-11-21T05:32:26.153 回答
0

看起来您的应用程序有两个不同的启动命令。

在 manifest.yml 中,您使用的是“node app.js”,而在您的 package.json 中,您使用的是“node ./bin/www”。

尝试让这两个文件匹配,这应该会有所帮助。让我知道它是否不起作用。

于 2014-09-11T18:31:11.033 回答
0

应用程序.js:

console.log('VCAP SERVICES: ' + JSON.stringify(process.env.VCAP_SERVICES, null, 4));

var mongoUrl;

如果(process.env.VCAP_SERVICES){

var vcapServices = JSON.parse(process.env.VCAP_SERVICES);

for (var svcName in vcapServices) {

if (svcName.match(/^mongo.*/)) {

  mongoUrl = vcapServices[svcName][0].credentials.uri;

  mongoUrl = mongoUrl || vcapServices[svcName][0].credentials.url;

  break;

}

}

}

别的

{

mongoUrl = "localhost:27017/SScheduler";

}

console.log('Mongo URL:' + mongoUrl);

// 数据库 var mongo = require('mongoskin');

var db = mongo.db(mongoUrl, {native_parser:true}); -->通过bluemix

//var db = mongo.db("mongodb://localhost:27017/nodetest2", {native_parser:true}); --> 通过本地设置

我试过这样,它适用于本地和通过 bluemix

于 2014-09-12T13:04:25.233 回答