我试图将我的node.js应用程序(使用express和mongoose)部署到openshift,我无法这样做。该应用程序完美适用于我的本地环境。应用程序启动失败(端口8080)不可用
我的切入点是文件/ bin中/ WWW
我建立这个作为openshift入口点与该线路的package.json文件(每this thread):
"main": "bin/www",
我有确信使用环境变量根据指南,像这样设置我的MongoDB连接:
// default to a localhost configuration:
var mongoConnectionString = 'mongodb://127.0.0.1/code-blog';
// if OPENSHIFT env variables are present, use the available connection info:
if (process.env.OPENSHIFT_MONGODB_DB_PASSWORD) {
mongoConnectionString = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
process.env.OPENSHIFT_APP_NAME;
}
mongoose.connect(mongoConnectionString);
,我得到的错误是:
remote: Waiting for application port (8080) become available ...
remote: Application 'codeblog' failed to start (port 8080 not available)
remote: -------------------------
remote: Git Post-Receive Result: failure
remote: Activation status: failure
remote: Activation failed for the following gears:
remote: 558a25bd5973ca7a74000162 (Error activating gear: CLIENT_ERROR: Failed to
execute: 'control start' for /var/lib/openshift/558a25bd5973ca7a74000162/nodejs
remote: #<IO:0x00000000b49380>
remote: #<IO:0x00000000b49308>
remote:)
remote: Deployment completed with status: failure
remote: postreceive failed
To ssh://[email protected].com/~/git/codebl
og.git/
29635a8..7a0e926 master -> master
这对我来说很有意思,因为我没有在任何地方指定端口8080。实际上,默认端口是在这里指定的:
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || "3000");
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
app.set('port', port);
var server = http.createServer(app);
我不知道该从哪里下去。我似乎没有足够的信息来确定我的下一步。
我添加了一些日志记录来测试它在哪个端口上运行,但日志语句永远不会运行。下面是代码
console.log("TEST TEST TEST");
var app = require('../app');
var debug = require('debug')('ProjectTemplate:server');
var http = require('http');
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || "3000");
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
console.log("PORT: ", port);
和输出
TEST TEST TEST
module.js:340
throw err;
^
Error: Cannot find module './routes/logIn'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/lib/openshift/558a25bd5973ca7a74000162/app-root/ runtime/repo/app.js:26:13)
TEST TEST TEST
是在入口点的文件的开头记录声明。某些东西似乎在它遇到console.log("PORT: ", port);
之前就失败了这可能与app.js
(MongoDb连接被创建)有关。
[/编辑]
'的console.log(端口);',看看它给你的HTTP的流量,你的应用程序服务的 –
后配置无关的MongoDB用。请停止在您的问题中添加不相关的标签 –
这些板上的类似错误消息指出了MongoDb连接字符串的问题。我不愿意在没有更多实质性调查的情况下将其排除在外。 –