Не удалось начать принимать соединение при развертывании моего приложения в 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);

Может ли кто-нибудь помочь мне в этом, спасибо заранее


person Santhosh S    schedule 09.05.2015    source источник
comment
Вы можете запустить его локально?   -  person Lorentz Lasson    schedule 09.05.2015
comment
Нет, моя SQLDB находится в bluemix.... так что я непосредственно развертываю в buemix   -  person Santhosh S    schedule 09.05.2015


Ответы (3)


В вашем фрагменте есть несколько синтаксических ошибок (отсутствуют закрывающие скобки и т. д.). Попробуйте использовать это вместо этого:

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 очень легко настроить локально, скачайте его здесь. Его локальный запуск может помочь вам выявить многие проблемы, такие как синтаксическая ошибка.

Надеюсь, поможет!

person Lorentz Lasson    schedule 09.05.2015
comment
мне нужно использовать http.createServer (функция (запрос, ответ) {}, потому что, как только клиент отправляет запрос по URL-адресу, тогда необходимо отправлять данные в ответ клиенту - person Santhosh S; 09.05.2015
comment
У меня есть одно сомнение: если я хочу выполнить проверку пользователя после выбора данных с помощью userId... Как я могу этого добиться....? - person Santhosh S; 09.05.2015

cf logs <app name> --recent

Эта команда предоставит вам журналы, которые покажут вам, где были ваши синтаксические ошибки.

person Ram Vennam    schedule 09.05.2015

Замечательно, что вы это поняли, но для справки в будущем ошибка «не удалось начать прием соединения» обычно означает, что код выдал исключение во время инициализации перед вызовом http.createServer(...).listen(port, host). Попробуйте добавить приведенный ниже код перед вызовом listen(...)

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

Журналы вашей консоли будут включать полезную трассировку стека, если код запуска не работает по непредвиденной причине, вместо получения сообщения по умолчанию «приложение разбилось».

Все еще застряли? Пэт Мюллер предлагает другие полезные советы в разделе Начало отладки Node.js с лучшим ведением журнала! и советы по Node.js от Дэвида Клементса. #1: разработка методов отладки предлагает более продвинутые советы по отладке, например деанонимизацию функций.

person Dan Kehn    schedule 11.05.2015