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 [email protected] / space demos as [email protected]...
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 [email protected] / space demos as [email protected]...
-----> 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
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
-----> 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 [email protected] / space demos as [email protected]...
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 ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected]
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected] ([email protected], [email protected])
2015-04-09T11:08:18.57-0400 [STG] OUT ├── [email protected] ([email protected])
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With