2015-01-30 19 views
6

node.js komut dosyasını çalıştırdığımda aşağıdaki hatayı alıyorum, hatayı izlemek için console.log() ekleyerek çok araştırmaya çalıştım ama herhangi bir çözüm bulamadı.Node.js undefined: 1 [SyntaxError: Beklenmeyen giriş sonu]

var options = { 
    host: '<my host>', 
    port: 3128, 
    path: 'http://<some host>:4080'+searchQuery, 
    method: 'GET', 
    headers: { 
    'App-Auth': cert 
    } 
}; 
var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); //DEBUG 
    for (var k in options) { console.log("[LOGGING] options :" + k + " = " + options[k]);} //DEBUG 
    res.on('data', function (resData) { 
    var resObj = ""; 
    resObj = JSON.parse(resData); 
    console.log("[LOGGING] Response:: "+resObj);    
    if(resObj.ydht.status.code === 200 && resObj.ydht.records[0].key.length > 0) { 
     console.log("[LOGGING] Email "+em+" Key  "+resObj.ydht.records[0].key);   
     var filePath = basePath + '/setData'; 
     var setd = require(filePath); 
     setd.setMagData(resObj.ydht.records[0].key, ycacert, is_sub); 
    } else { 
     console.log("[LOGGING] Fail to fetch data em  "+em+" nl  "+nl); 
    } 
    }); 
    res.on('end', function() { 
    console.log("[LOGGING] connection closed"); 
    }); 
}); 
req.on('error', function(err) { 
    console.log("[LOGGING] Fail to fetch data em  "+em+" nl  "+nl); 
}); 
req.end(); 

ben bukle komutunu kullanarak api aradığınızda, aşağıda geçerli json olsun: Burada

undefined:1 
    {"ydht":{"status":{"code":200,"message":"OK"},"records":[ 
                ^
SyntaxError: Unexpected end of input 
at Object.parse (native) 
at IncomingMessage.<anonymous> (/tmp/subs_20140130/inc/getData.js:36:24) 
at IncomingMessage.EventEmitter.emit (events.js:95:17) 
at IncomingMessage.<anonymous> (_stream_readable.js:745:14) 
at IncomingMessage.EventEmitter.emit (events.js:92:17) 
at emitReadable_ (_stream_readable.js:407:10) 
at emitReadable (_stream_readable.js:403:5) 
at readableAddChunk (_stream_readable.js:165:9) 
at IncomingMessage.Readable.push (_stream_readable.js:127:10) 
at HTTPParser.parserOnBody [as onBody] (http.js:142:22) 

benim kodudur: [Ben de diğer Stackoverflow çözümü aramış ama hiçbiri yardımcı Not] cevabı: data geri arama yanıtı topakları ile birden çok kez denir

{"ydht":{"status":{"code":200,"message":"OK"},"records":[{"metadata":{"seq_id":"intusnw1-14B3579A577-3","modtime":1422531339,"disk_size":99},"key":"[email protected]","fields":{"em":{"value":"[email protected]"},"is_confirm":{"value":""},"nl":{"value":"offerpop1"}}}],"continuation":{"scan_completed":false,"scan_status":200,"uri_path":"/YDHTWebService/V1/ordered_scan/dts.subs_email?order=asc&start_key=a0"}}} 

cevap

16

. Her bir geri dönüşte, bir dizgeye ve ardından end'a yanıtı eklemeniz gerekir;

var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); 
    var body = ""; 
    res.on('data', function(resData) { 
     body += resData; 
    }); 
    res.on('end', function() { 
     var json = JSON.parse(body); 
     if (json.ydht.status.code === 200 && json.ydht.records[0].key.length > 0) { 
      var filePath = basePath + '/setData'; 
      var setd = require(filePath); 
      setd.setMagData(json.ydht.records[0].key, ycacert, is_sub); 
     } else { 
      console.log("[LOGGING] Fail to fetch data em  " + em + " nl  " + nl); 
     } 
    }); 
}); 
+0

bana çok teşekkür ederim –

+0

çözümünüzü deneyelim. Çözümün hayatımı kurtardı: D –

+0

Teşekkür ederim çok çalıştı! –

0

Her şeyden önce Doğru kök neden analizi için Ben'e teşekkür ederim. Ben'in önerdiği çözümü denedim, ancak yanıt verilerim çok büyük olduğu için bana "priz kapat" hatası vermeye başladı.

8:

undefined:1 
[ 

Bu .json dosyası olarak kaydedilir çünkü: Ben bu hatayı alınca Benim için node.js istek modülünü

//Load the request module (Dont forget to include it in package.json dependency "request": "2.x.x") 
var request = require('request'); 

request('http://xys.com/api', function (error, response, body) { 
    //Check for error 
    if(error){ 
     return console.log('Error:', error); 
    } 

    //Check for right status code 
    if(response.statusCode !== 200){ 
     return console.log('Invalid Status Code Returned:', response.statusCode); 
    } 

    console.log(body); // Here is the response body 

}); 
0

kullanarak çözüm yeniden tasarlamak zorunda -bit unicode BOM, Win (CRLF) yerine : 8-bit unicode, Win (CRLF)

benim için sonradan olması gerekiyor!

GEÇ

İlgili konular