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.
我试图在Bluemix中启动我的节点应用程序并得到一个奇怪的错误。我的应用在本地工作。我已从我的应用程序中复制了一个代码段。
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.
我的应用程序永远不会在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
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?
有任何想法吗?
3 个解决方案
#1
7
I found out it was an issue with Cloud Foundry starting my app.
我发现Cloud Foundry启动我的应用程序时遇到了问题。
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.
在挖掘我的代码时,我试图在本地绑定到端口8080。这很好,但是在Cloud Foundry中,您需要绑定到指定的端口。为此,您需要读取名为VCAP_APP_PORT的环境变量。我在下面粘贴了一段代码片段,说明我是如何修复它的。
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
3
Another suggestion: Add this prior to the call to app.listen(...)
另一个建议:在调用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.
如果启动代码因意外原因而失败而不是接收默认的“app crashed”消息,则控制台日志将包含有用的堆栈跟踪。
#3
2
You can get this text off of the .stack
property from any Error
. For instance:
您可以从任何错误中获取.stack属性的此文本。例如:
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.
或者只是为了使用console.log获取堆栈跟踪而新出现错误(new Error()。stack)。此代码段将在任何时刻获取堆栈跟踪,而不仅仅是在catch块中。
#1
7
I found out it was an issue with Cloud Foundry starting my app.
我发现Cloud Foundry启动我的应用程序时遇到了问题。
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.
在挖掘我的代码时,我试图在本地绑定到端口8080。这很好,但是在Cloud Foundry中,您需要绑定到指定的端口。为此,您需要读取名为VCAP_APP_PORT的环境变量。我在下面粘贴了一段代码片段,说明我是如何修复它的。
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
3
Another suggestion: Add this prior to the call to app.listen(...)
另一个建议:在调用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.
如果启动代码因意外原因而失败而不是接收默认的“app crashed”消息,则控制台日志将包含有用的堆栈跟踪。
#3
2
You can get this text off of the .stack
property from any Error
. For instance:
您可以从任何错误中获取.stack属性的此文本。例如:
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.
或者只是为了使用console.log获取堆栈跟踪而新出现错误(new Error()。stack)。此代码段将在任何时刻获取堆栈跟踪,而不仅仅是在catch块中。