cloud9 + mongodb + nodejs

时间:2012-05-19 03:03:20

标签: node.js mongodb cloud9-ide

我使用cloud9 ide编码新项目。当我从cloud9ide部署cloudfoundry时。我有错误

  

应用程序无法启动。请注意,CloudFoundry使用不同的端口进行收听。当调用'listen()'时,请使用'.listen(process.env.PORT || process.env.VCAP_APP_PORT)'。

这是我的来源

  

var port =(process.env.VMC_APP_PORT || 3000);

     

var host =(process.env.VCAP_APP_HOST ||'localhost');

     

var http = require('http');

     

var env = process.env.VCAP_SERVICES? JSON.parse(process.env.VCAP_SERVICES):null;

     

var mongodata = env ['mongodb-1.8'] [0] ['凭据'];

     

http.createServer(function(req,res){

     

res.writeHead(200,{'Content-Type':'text / plain'});

     

res.end('Hello World \ n'+ env);   })。listen(port,host);

当我获取mongo对象时,此源有错误

  

var mongodata = env ['mongodb-1.8'] [0] ['凭据'];

但是没有这条线部署成功

请帮助我!!

非常感谢

1 个答案:

答案 0 :(得分:0)

由于cloud9控制台中的错误可能告诉你(因为它告诉我何时尝试这个:-)):

haalasdoallalsakdl (CloudFoundry): [5/6] Crash log
============/logs/stderr.log============
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Cannot read property '0' of undefined
    at Object.<anonymous> (/var/vcap/data/dea/apps/haalasdoallalsakdl-0-8be0d413a9ec29a79f665d388ce414bd/app/server.js:7:35)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

所以VCAP_SERVICES中没有这样的条目。当我console.log process.env变量时,甚至没有列出任何服务。

因此,您必须为您的应用安装mongodb服务。最快的做法是通过CF VMC工具(目前无法在cloud9中运行,因此您必须在本地安装):

vmc create-service mongodb --bind your_app_name

然后它会好起来的。

N.B。您可以在.yml文件中修复此问题,但我不知道如何执行此操作: - )