简体   繁体   English

我在Bluemix中启动节点应用程序时遇到问题

[英]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. 我试图在Bluemix中启动我的节点应用程序并得到一个奇怪的错误。 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. 我的应用程序永远不会在Bluemix中启动。 The error I am getting on Bluemix is below. 我在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? 有任何想法吗?

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. 在挖掘我的代码时,我试图在本地绑定到端口8080。 That is fine, but however in Cloud Foundry you need to bind to a specified port. 这很好,但是在Cloud Foundry中你需要绑定到指定的端口。 To do this you need to read an environment variable called VCAP_APP_PORT . 为此,您需要读取名为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(...) 另一个建议:在调用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”消息,则您的控制台日志将包含有用的堆栈跟踪。

You can get this text off of the .stack property from any Error . 您可以从任何Error获取.stack属性的.stack 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) . 或者只是为了使用console.log(new Error().stack)获取堆栈跟踪而出现console.log(new Error().stack) This code snippet will get the stack trace at any point, not just in a catch block. 此代码段将在任何时刻获取堆栈跟踪,而不仅仅是在catch块中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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