【问题标题】:cloud9 + mongodb + nodejscloud9 + mongodb + nodejs
【发布时间】:2012-05-26 13:55:11
【问题描述】:

我使用 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]['credentials'];

http.createServer(function (req, res) {

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

res.end('Hello World\n' + env); }).listen(端口,主机);

当我得到 mongo 对象时,这个来源有错误

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

但是这条线没有部署成功

请帮帮我!!

非常感谢

【问题讨论】:

  • 这似乎暗示VCAP_SERVICES 不可用。尝试删除该行。当您访问 Web 服务器时,您在输出中看到了什么?你有res.end('Hello World\n' + env);,所以你应该能够看到这些东西是否真的在env 中定义。这看起来像是你做的,所以你应该知道。
  • 根据错误信息,第一行不应该是var port = (process.env.PORT || process.env.VCAP_APP_PORT)吗?

标签: node.js mongodb cloud9-ide


【解决方案1】:

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

然后就可以正常启动了。

注意您可能可以在 .yml 文件中解决此问题,但我不知道该怎么做 :-)

【讨论】:

  • >>vmc create-service mongodb --bind your_app_name 当我在本地部署表单时没有错误,但是当通过 c9 部署时有同样的错误
  • 我刚试过这个,当我把我试图从 Cloud9 部署到的应用程序代替 your_app_name 时,它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2012-01-20
  • 2021-05-14
  • 2017-08-15
  • 2019-06-14
  • 1970-01-01
相关资源
最近更新 更多