Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 应用程序启动失败(端口8080)不可用_Node.js_Mongodb_Openshift - Fatal编程技术网

Node.js 应用程序启动失败(端口8080)不可用

Node.js 应用程序启动失败(端口8080)不可用,node.js,mongodb,openshift,Node.js,Mongodb,Openshift,我正在尝试将我的node.js应用程序(使用express和mongoose)部署到openshift,但我无法这样做。该应用程序在我的本地环境中运行良好 我的入口点是文件/bin/www 我使用package.json文件(per)中的这一行将其作为openshift的入口点: 我已确保根据指南使用环境变量设置mongodb连接,如下所示: // default to a localhost configuration: var mongoConnectionString = 'mongodb

我正在尝试将我的node.js应用程序(使用express和mongoose)部署到openshift,但我无法这样做。该应用程序在我的本地环境中运行良好

我的入口点是文件/bin/www

我使用package.json文件(per)中的这一行将其作为openshift的入口点:

我已确保根据指南使用环境变量设置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://558a25bd5973ca7a74000162@codeblog-donaldsubert.rhcloud.com/~/git/codebl
og.git/
   29635a8..7a0e926  master -> master
我真的不知道该从这里走到哪里。我似乎没有足够的信息来决定下一步

[编辑] 我添加了一些日志来测试它在哪个端口上运行,但是日志语句从未运行过。这是密码

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)
测试
module.js:340
犯错误;
^
错误:找不到模块“./routes/logIn”
在Function.Module.\u解析文件名(Module.js:338:15)
在Function.Module.\u加载(Module.js:280:25)
at Module.require(Module.js:364:17)
根据需要(模块js:380:17)
反对。(/var/lib/openshift/558a25bd5973ca7a74000162/app root/runtime/repo/app.js:26:13)
TEST
来自入口点文件开头的日志语句。在点击
console.log(“端口:”,PORT)之前,有些东西似乎失败了
这可能与建立MongoDb连接的
app.js
有关


[/edit]

我认为此行不会在指定端口上创建服务器

var server = http.createServer(app);
您需要告诉它在端口上监听,如下所示:

server.listen(port);

当你的应用在正确的端口上侦听时,缺少的是你没有指定要侦听的IP地址。在下面的app.set('port',port')中添加类似的内容


我在这里已经详细提到了

解决方案是在侦听服务器时需要指定IP地址

我就是这样修好的

var express = require('express');
var app = express();
var http = require('http');

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");


http.createServer(app).listen(app.get('port') ,app.get('ip'), function () {
    console.log("✔ Express server listening at %s:%d ", app.get('ip'),app.get('port'));
    server();
});

具有完全相同的错误消息:
打开的换档节点应用程序上的应用程序“appname”启动失败(端口8080不可用)

经过大量阅读,发现许多不同的用户针对同一个错误消息采用了不同的解决方案,包括我自己。所以我建议不要为这个错误寻找快速的解决方案。 最重要的步骤是下表中的步骤1

我的解决方案是在package.json中添加一个缺少的依赖项,对于我的特殊情况,我需要添加
“bcrypt”:“~0.8.5”
,这太愚蠢了

现在,我如何在知道“端口8080不可用”错误的情况下解决问题:

  • ssh进入应用程序,转到应用程序repo dir(
    cd$OPENSHIFT\u repo\u dir
    )并运行
    npm start
  • 获取
    […]错误:找不到模块“bcrypt”[…]
  • 从ssh注销,运行npm info bcrypt|grep版本:,返回“0.8.5”
  • 在my package.json中添加条目“bcrypt”:“~0.8.5”,并提交/推送更改
  • 问题解决,应用程序运行
    该错误原来是与端口无关的一般错误。显然,如果有任何致命的javascript错误,它会给出此消息。

    对我来说,这是连接字符串。在您创建mongodb盒带后建议的一个不起作用:
    连接URL:mongodb://$OPENSHIFT\u mongodb\u DB\u主机:$OPENSHIFT\u mongodb\u端口/'nodejs'

    但是通过使用
    OPENSHIFT\u MONGODB\u DB\u URL
    变量,它起到了作用

    if(process.env.OPENSHIFT_MONGODB_DB_URL){
      mongodb_connection_string = process.env.OPENSHIFT_MONGODB_DB_URL + db_name;
    

    }

    console.log(端口)
    并查看它为您提供了什么。针对http流量的应用程序服务的POST配置与MongoDB无关。请停止在问题中添加不相关的标记。这些板上显示的类似错误消息表明MongoDb连接字符串存在问题。我不愿意排除这一可能的原因,如果没有更实质性的查询端口
    8080显然是您的
    OPENSHIFT\u NODEJS\u PORT`的设置。您的错误消息也不是关于MongoDB连接,而是等待http的服务端口。很明显。我可以整天这样做。对于一个与主题无关的问题,我们不需要太多的噪音。我真的要举报你的骚扰。我正试图找出如何让第三方应用程序在我的实例上运行,ssh应用程序上的
    npm start
    建议为我提供了解决问题的工具。谢谢
    app.set('ipaddr', server_ip_address);
    
    var express = require('express');
    var app = express();
    var http = require('http');
    
    app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
    app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");
    
    
    http.createServer(app).listen(app.get('port') ,app.get('ip'), function () {
        console.log("✔ Express server listening at %s:%d ", app.get('ip'),app.get('port'));
        server();
    });
    
    if(process.env.OPENSHIFT_MONGODB_DB_URL){
      mongodb_connection_string = process.env.OPENSHIFT_MONGODB_DB_URL + db_name;