Jeff Sloyer Jeff Sloyer - 3 months ago 22
Node.js Question

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?

Answer

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