2015-05-09 20 views
1

嗨现在面临“无法开始接受连接”的错误,同时推动或部署我的应用程序bluemix。可以在任何帮助我在这....我的代码片段,如下所示:获得“无法开始接受连接”,同时部署我的应用程序到bluemix

var express  = require('express'); 
app   = express(); 
var ibmbluemix = require('ibmbluemix') 
var ibmdb = require('ibm_db'); 
var http = require('http'); 
var url = require('url'); 
var logger = ibmbluemix.getLogger(); 
var PORT = (process.env.VCAP_APP_PORT || 8000); 
var HOST = (process.env.VCAP_APP_HOST || 'localhost'); 
var queryData = null; 
var serviceName = 'SQLDB'; 

if (process.env.VCAP_SERVICES) { 
    var env = JSON.parse(process.env.VCAP_SERVICES); 
    db2 = env['sqldb'][0].credentials; 
} 
else{ 
    console.error("INFORMATION FOR DB CONNECTION NOT FOUND"); 
} 

var dbConnection = "DRIVER={DB2};DATABASE=" + db2.db + ";UID=" + db2.username + ";PWD=" + db2.password + ";HOSTNAME=" + db2.hostname + ";port=" + db2.port; 
console.log("Connection String: " + dbConnection); 

http.createServer(function(request, response) { 
    console.log('Creating the http server'); 
    ibmdb.open(dbConnection, function(err, conn) { 
     if (err) { 
      response.send("error occurred " + err.message); 
     } 
     else { 
      console.log('before select'); 
      conn.query("SELECT FULL_NAME, PASSWORD, SHORT_ID FROM USER02130.USER_DETAILS", function(err, rows, moreResultSets) { 
       console.log('Connection result error '+err); 
       console.log('no of records is '+rows.length); 
       response.writeHead(200, { 'Content-Type': 'application/json'}); 
       response.write(JSON.stringify(rows)); 
       response.end(); 
      }); 
     } 

}).listen(PORT, HOST); 

谁能帮我在这,提前

+0

您能够在本地运行呢? –

+0

不,我的SQLDB是在bluemix ....所以我直接部署到buemix –

回答

1

有程式码中的几个语法错误(缺少收盘感谢括号等)。尝试使用此代替:

var express  = require('express'); 
app = express(); 
var ibmbluemix = require('ibmbluemix') 
var ibmdb = require('ibm_db'); 
var http = require('http'); 
var url = require('url'); 
var logger = ibmbluemix.getLogger(); 
var PORT = (process.env.VCAP_APP_PORT || 8000); 
var HOST = (process.env.VCAP_APP_HOST || 'localhost'); 
var queryData = null; 
var serviceName = 'SQLDB'; 

if (process.env.VCAP_SERVICES) { 
    var env = JSON.parse(process.env.VCAP_SERVICES); 
    var db2 = env['sqldb'][0].credentials; // missed declaration 
} 
else{ 
    console.error("INFORMATION FOR DB CONNECTION NOT FOUND"); 
} 

var dbConnection = "DRIVER={DB2};DATABASE=" + db2.db + ";UID=" + db2.username + ";PWD=" + db2.password + ";HOSTNAME=" + db2.hostname + ";port=" + db2.port; 
console.log("Connection String: " + dbConnection); 

http.createServer(function(request, response) { 
    console.log('server request'); // does not create a server on every request 
    ibmdb.open(dbConnection, function(err, conn) { 
     if (err) { 
      response.send("error occurred " + err.message); 
     } 
     else { 
      console.log('before select'); 
      conn.query("SELECT FULL_NAME, PASSWORD, SHORT_ID FROM USER02130.USER_DETAILS", function(err, rows, moreResultSets) { 
       console.log('Connection result error '+err); 
       console.log('no of records is '+rows.length); 
       response.writeHead(200, { 'Content-Type': 'application/json'}); 
       response.write(JSON.stringify(rows)); 
       response.end(); 
      }); 
     } 
    }) // missed closing brackets 
}).listen(PORT, HOST); 

console.log("Server running at "+HOST+" on port "+ PORT); 

Node.js很容易在本地设置,得到它here。在本地运行它可以帮助您识别许多问题,例如语法错误。

希望它有帮助!

+0

我需要使用http.createServer(函数(请求,响应) } }因为一旦客户端通过url发送请求,然后需要发送数据为响应客户的 –

+0

好的,换回来使用HTTP模块 –

+0

现在让我试试...... –

0
cf logs <app name> --recent 

该命令会给你日志,它会告诉你你的语法错误在哪里。

-1

这是伟大的,你想通了,但是为了将来的参考,“无法开始接受连接”的错误通常是指调用http.createServer(...).listen(port, host)之前初始化在代码抛出异常。尝试调用之前添加如下代码即可listen(...)

process.on('uncaughtException', function (err) { 
    console.log(err); 
}); 

你的控制台日志,然后将包括一个有用的堆栈跟踪,如果一个不可预见的原因,启动代码失败,而不是接受默认的“应用程序崩溃”的消息。

还卡住了吗?帕特穆勒提供了Node.js debugging starts with better logging!其他有益的建议和大卫·克莱门茨Node.js tips #1: develop debugging techniques提供了更先进的调试技巧,例如,函数去匿名。

相关问题