为什么 Node-RED 无法解析 Bluemix 中的 VCAP_SERVICES 环境?

Why can't Node-RED parse the VCAP_SERVICES environment in Bluemix?

我正在使用 Node-RED 并想在 Bluemix 中进行解析 VCAP_SERVICES 但我遇到了错误。我的代码是:

var services = context.global.VCAP_SERVICES;
var env_cloudint = services['CloudIntegration'][0].credentials;

但我收到此错误:

TypeError: Cannot read property 'CloudIntegration' of undefined

我的 VCAP_SERVICES 中确实有 CloudIntegration。我的代码中是否需要任何额外的东西来利用 VCAP_SERVICES

默认情况下,环境变量不会添加到函数全局上下文对象中。要从 Node-RED 流访问 Bluemix VCAP_SERVICES 环境变量,您需要将其添加到 Function 节点的全局上下文中。

编辑 bluemix-settings.js 并向 functionGlobalContext 添加一个条目 属性:

functionGlobalContext: { VCAP_SERVICES: JSON.parse(process.env.VCAP_SERVICES)}

然后重新部署您的应用。重新部署后,您可以在 Function 节点中访问 VCAP_SERVICES 作为 context.global.VCAP_SERVICES 变量。