所以我为一个监控页面加载速度的大学项目创建了一个 NodeJS 应用程序。为了记录上述速度,我需要人们去网页应用程序,转到某个页面并按几次按钮。
因此,我找到了一种免费托管此应用程序的方法,并提出 OpenShift 。
在弄清楚它是如何工作之后我设法设置了一个OpenShift git-repository,我能够将我的更改推送到服务器。
然而,在访问我的页面时,我不断获得error 503
。最初我认为这是一个节点模块错误,所以我发现npm shrinkwrap
解决了npm
版本问题。错误仍然存在。
当我在本地运行应用程序时,我没有任何错误,并且所有模块都已正确安装。它们也在package.json
文件中(我使用npm install --save
表示所有模块,因此未执行手动编辑。)
这是使用tail
- 命令并将结果扩展到文本文件中的前几行。
==> app-root/logs/nodejs.log <==
at Connection.connect (/var/lib/openshift/550db5624382ecf8f400000f/app>root/runtime/repo/node_modules/mysql/lib/Connection.js:109:18)
at Object.<anonymous> (/var/lib/openshift/550db5624382ecf8f400000f/approot/runtime/repo/server.js:28:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
DEBUG: Program node server.js exited with code 8
DEBUG: Starting child process with 'node server.js'
我也发现了这个:
==> app-root/logs/nodejs.log <==
Error: connect ECONNREFUSED
at errnoException (net.js:901:11)
at Object.afterConnect [as oncomplete] (net.js:892:19)
--------------------
at Protocol._enqueue (/var/lib/openshift/550db5624382ecf8f400000f/app-root/runtime/repo/node_modules/mysql/lib/protocol/Protocol.js:135:48)
at Protocol.handshake (/var/lib/openshift/550db5624382ecf8f400000f/app-root/runtime/repo/node_modules/mysql/lib/protocol/Protocol.js:52:41)
at Connection.connect (/var/lib/openshift/550db5624382ecf8f400000f/app-root/runtime/repo/node_modules/mysql/lib/Connection.js:109:18)
at Object.<anonymous> (/var/lib/openshift/550db5624382ecf8f400000f/app-root/runtime/repo/server.js:28:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
DEBUG: Program node server.js exited with code 8
有什么想法吗?
答案 0 :(得分:0)
例如,这是我编辑过的“后”版本:
self.app.set('views', path.join(__dirname, 'views'));
我之前可能就是这样:
self.app.set('views', '/views');
希望有所帮助。
答案 1 :(得分:0)
嗯......你已经......
Error: connect ECONNREFUSED
...这表明Express无法连接到数据库。也许您已经开始使用dev和prod凭据,并且代码尝试使用本地凭据,本地数据库名称,本地用户名,本地服务器等。
我使用MongoDB(本地没有凭据)并创建了一个/db.js文件来存储所有这些内容。然后我的/server.js选择哪个变量:
if (typeof process.env.OPENSHIFT_NODEJS_IP === "undefined") { mongoose.connect(dbConfig.devurl); } else { mongoose.connect(dbConfig.produrl); }
请注意dbConfig.varname之后的两个不同变量。