我的 app.js 文件如下所示:
var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');
var rip = require('./config.js');
http.createServer(function (req, res) {
//do nothing...no response expected via http
}).listen(port, host);
config.js 文件包含这个(以及更多,但为了简洁/相关性而删减):
//several global.<property_name> assignments
global.mName = "Application Name";
//serveral more global.<property_name> assignments
...
...
require("./main.js");
main.js 文件的开头是这样的:
console.log(mName+" >>> Loading.");
当我在本地运行应用程序时,它可以通过运行正常执行:
节点应用程序.js
但是,当我使用以下命令将应用程序推送到 Cloud Foundry 时:
vmc 推送 [app_name] --runtime=node06
我收到以下错误:
创建应用程序:OK 上传应用程序:
检查可用资源:OK
处理资源:OK
打包应用程序:OK
上传(10K):OK
推送状态:OK 暂存应用程序 'app_name':OK
启动应用程序 'app_name':...... .....................错误:应用程序 [app_name] 无法启动,在下面记录信息。
====> /logs/stderr.log <====
node.js:134 抛出 e;// process.nextTick 错误,或第一次滴答时的 'error' 事件 ^ ReferenceError: mName is not defined at Object. (/var/vcap/data/dea/apps/app_name-0-6996d737ed319bcffaf696d653423d7c/app/main.js:6:1) 在 Module._compile (module.js:411:26) 在 Object..js (module.js :417:10) 在 Module.load (module.js:343:31) 在 Function._load (module.js:302:12) 在 Array。(module.js:430:10) 在 EventEmitter._tickCallback (node.js:126:26)
似乎我在 config.js 的全局对象中设置的属性没有被带到 main.js。我通过修改 main.js 以显式引用 global.mName 而不仅仅是 mName 来验证这一点,并且该错误消失了,但是对全局对象属性的另一个引用随后开始抱怨。
因为没有明确的“全局”,一切都在本地正常工作。参考,我认为我不应该明确引用“全球”。对于那些变量。我在这里缺少什么吗?任何帮助表示赞赏。
谢谢!