Q:

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?

A:

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

A:

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.

