简体   繁体   中英

I am having trouble starting my node app in Bluemix

I am trying to start my node app in Bluemix and getting a weird error. My app works locally. I have copied a snippet out of my app below.

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

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

app.listen(8080);

My app never starts in Bluemix. The error I am getting on Bluemix is below.

[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

Here is the logs from when the app tries to deploy.

[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

Any ideas?

I found out it was an issue with Cloud Foundry starting my app.

In digging into my code I was trying to bind to port 8080 locally. That is fine, but however in Cloud Foundry you need to bind to a specified port. To do this you need to read an environment variable called VCAP_APP_PORT . I have pasted a code snippet below on how I fixed it.

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);

Another suggestion: Add this prior to the call to app.listen(...)

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

Your console logs will then include a helpful stack trace if the startup code fails for an unforeseen reason instead of receiving the default "app crashed" message.

You can get this text off of the .stack property from any Error . For instance:

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

or just new up an error for the purposes of getting the stack trace with console.log(new Error().stack) . This code snippet will get the stack trace at any point, not just in a catch block.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM