【问题标题】:I am having trouble starting my node app in Bluemix我无法在 Bluemix 中启动我的节点应用程序
【发布时间】:2015-04-09 15:15:44
【问题描述】:

我正在尝试在 Bluemix 中启动我的节点应用程序并收到一个奇怪的错误。我的应用程序在本地运行。我从下面的应用中复制了一个 sn-p。

var express = require("express"),
    app = express();

app.get("/", function (request, response) {
    response.render("index");
});

app.listen(8080);

我的应用程序永远不会在 Bluemix 中启动。我在 Bluemix 上遇到的错误如下。

[11:07 AM] jsloyer@Jeffs-MacBook-Pro [testapp]>cf push myapp
Creating app myapp in org myemail@co.com / space demos as myemail@co.com...
OK

Creating route myapp.mybluemix.net...
OK

Binding myapp.mybluemix.net to myapp...
OK

Uploading myapp...
Uploading app files from: /Users/jsloyer/Downloads/testapp
Uploading 566, 2 files
Done uploading               
OK

Starting app myapp in org myemail@co.com / space demos as myemail@co.com...
-----> Downloaded app package (4.0K)
-----> Node.js Buildpack Version: v1.15-20150331-2231
-----> Resetting git environment
       TIP: Specify a node version in package.json
-----> Defaulting to latest stable node: 0.10.38
-----> Installing IBM SDK for Node.js from cache
-----> Checking and configuring service extensions
-----> Installing dependencies
       npm WARN package.json bluemix-deploy@ No description
       npm WARN package.json bluemix-deploy@ No repository field.
       npm WARN package.json bluemix-deploy@ No README data
       ├── methods@0.1.0
       ├── parseurl@1.0.1
       ├── merge-descriptors@0.0.2
       ├── escape-html@1.0.1
       ├── debug@0.8.1
       ├── cookie-signature@1.0.3
       ├── fresh@0.2.2
       ├── range-parser@1.0.0
       ├── qs@0.6.6
       ├── buffer-crc32@0.2.1
       ├── cookie@0.1.0
       ├── path-to-regexp@0.1.2
       ├── accepts@1.0.0 (negotiator@0.3.0, mime@1.2.11)
       ├── send@0.2.0 (mime@1.2.11)
-----> Caching node_modules directory for future builds
-----> Cleaning up node-gyp and npm artifacts
-----> No Procfile found; Adding npm start to new Procfile
-----> Building runtime environment
-----> Checking and configuring service extensions
-----> Installing App Management

-----> Uploading droplet (8.9M)

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 down
0 of 1 instances running, 1 down
0 of 1 instances running, 1 down
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 down
0 of 1 instances running, 1 down
0 of 1 instances running, 1 down
0 of 1 instances running, 1 down
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
FAILED
Start app timeout

TIP: use 'cf logs myapp --recent' for more information

这是应用尝试部署时的日志。

[11:10 AM] jeff@jeffs-mbp [node-red]>cf logs myapp --recent
Connected, dumping recent logs for app myapp in org myemail@co.com / space demos as myemail@co.com...

2015-04-09T11:07:12.97-0400 [API]     OUT Created app with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069
2015-04-09T11:07:16.60-0400 [API]     OUT Updated app with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069 ({"route"=>"e518e637-6b86-4110-8359-b8cdeda946e2"})
2015-04-09T11:07:48.28-0400 [DEA]     OUT Got staging request for app with id de2f73ce-e19a-4daa-b4a9-6ab59588a069
2015-04-09T11:08:13.54-0400 [API]     OUT Updated app with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069 ({"state"=>"STARTED"})
2015-04-09T11:08:13.71-0400 [STG]     OUT -----> Downloaded app package (4.0K)
2015-04-09T11:08:14.39-0400 [STG]     OUT -----> Node.js Buildpack Version: v1.15-20150331-2231
2015-04-09T11:08:14.39-0400 [STG]     OUT -----> Resetting git environment
2015-04-09T11:08:14.84-0400 [STG]     OUT        TIP: Specify a node version in package.json
2015-04-09T11:08:14.84-0400 [STG]     OUT -----> Defaulting to latest stable node: 0.10.38
2015-04-09T11:08:14.84-0400 [STG]     OUT -----> Installing IBM SDK for Node.js from cache
2015-04-09T11:08:15.27-0400 [STG]     OUT -----> Checking and configuring service extensions
2015-04-09T11:08:15.39-0400 [STG]     OUT -----> Installing dependencies
2015-04-09T11:08:16.14-0400 [STG]     OUT        npm WARN package.json bluemix-deploy@ No description
2015-04-09T11:08:16.14-0400 [STG]     OUT        npm WARN package.json bluemix-deploy@ No repository field.
2015-04-09T11:08:16.14-0400 [STG]     OUT        npm WARN package.json bluemix-deploy@ No README data
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── methods@0.1.0
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── parseurl@1.0.1
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── merge-descriptors@0.0.2
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── escape-html@1.0.1
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── debug@0.8.1
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── cookie-signature@1.0.3
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── fresh@0.2.2
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── range-parser@1.0.0
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── qs@0.6.6
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── buffer-crc32@0.2.1
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── cookie@0.1.0
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── path-to-regexp@0.1.2
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── accepts@1.0.0 (negotiator@0.3.0, mime@1.2.11)
2015-04-09T11:08:18.57-0400 [STG]     OUT        ├── send@0.2.0 (mime@1.2.11)
2015-04-09T11:08:18.64-0400 [STG]     OUT -----> Caching node_modules directory for future builds
2015-04-09T11:08:18.69-0400 [STG]     OUT -----> Cleaning up node-gyp and npm artifacts
2015-04-09T11:08:18.70-0400 [STG]     OUT -----> No Procfile found; Adding npm start to new Procfile
2015-04-09T11:08:18.71-0400 [STG]     OUT -----> Building runtime environment
2015-04-09T11:08:18.71-0400 [STG]     OUT -----> Checking and configuring service extensions
2015-04-09T11:08:18.86-0400 [STG]     OUT -----> Installing App Management
2015-04-09T11:08:19.07-0400 [STG]     ERR 
2015-04-09T11:08:22.56-0400 [STG]     OUT -----> Uploading droplet (8.9M)
2015-04-09T11:08:29.25-0400 [DEA]     OUT Starting app instance (index 0) with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069
2015-04-09T11:08:56.16-0400 [App/0]   OUT 
2015-04-09T11:08:56.16-0400 [App/0]   OUT > bluemix-deploy@ start /home/vcap/app
2015-04-09T11:08:56.16-0400 [App/0]   OUT > node app.js
2015-04-09T11:09:55.54-0400 [DEA]     ERR Instance (index 0) failed to start accepting connections
2015-04-09T11:09:55.58-0400 [API]     OUT App instance exited with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069 payload: {"cc_partition"=>"default", "droplet"=>"de2f73ce-e19a-4daa-b4a9-6ab59588a069", "version"=>"0d4e67c9-1c0c-4e11-bbfb-027bb45e0d67", "instance"=>"eab34911da3947a3bb1b9e2a5564da72", "index"=>0, "reason"=>"CRASHED", "exit_status"=>-1, "exit_description"=>"failed to accept connections within health check timeout", "crash_timestamp"=>1428592195}
2015-04-09T11:09:56.14-0400 [App/0]   ERR 
2015-04-09T11:10:28.80-0400 [DEA]     OUT Starting app instance (index 0) with guid de2f73ce-e19a-4daa-b4a9-6ab59588a069

有什么想法吗?

【问题讨论】:

    标签: node.js cloud-foundry ibm-cloud


    【解决方案1】:

    我发现 Cloud Foundry 启动我的应用时出现问题。

    在深入研究我的代码时,我试图在本地绑定到端口 8080。这很好,但是在 Cloud Foundry 中,您需要绑定到指定的端口。为此,您需要读取一个名为VCAP_APP_PORT 的环境变量。我在下面粘贴了一段代码 sn-p 来说明我是如何修复它的。

    var express = require("express"),
        app = express();
    
    
    var port = process.env.VCAP_APP_PORT || 8080;
    
    app.get("/", function (request, response) {
        response.render("index");
    });
    
    app.listen(port);
    

    【讨论】:

      【解决方案2】:

      另一个建议:在调用app.listen(...)之前添加这个

      process.on('uncaughtException', function (err) {
          console.log(err);
      }); 
      

      如果启动代码由于不可预见的原因而失败,而不是收到默认的“应用程序崩溃”消息,您的控制台日志将包含有用的堆栈跟踪。

      【讨论】:

        【解决方案3】:

        您可以从任何Error.stack 属性中获取此文本。例如:

        try {
          throw new Error();
        } catch (e) {
          console.log(e.stack);
        }
        

        或者只是为了使用console.log(new Error().stack) 获取堆栈跟踪而新建一个错误。这段代码 sn-p 将在任何时候获取堆栈跟踪,而不仅仅是在 catch 块中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多