2013-11-23 2 views
0

У меня есть цикл for, который вызывает погоду api 27 раз (27 разных координат).node.js запрос | иногда неожиданная ошибка токена иногда не

var input = { 
      query: coords[1] + ',' + coords[0] , 
      format: 'JSON', 
      fx: '' 
      }; 
var url = _PremiumApiBaseURL + "marine.ashx?q=" + input.query + "&format=" + input.format + "&fx=" + input.fx + "&key=" + _PremiumApiKey;  
request(url,function (err, resp, body){ 
      body = JSON.parse(body); 

Возвращенное тело - тип строчки. Дело в том, что при выполнении JSON.parse иногда я получаю ошибку, показанную ниже, а иногда и нет. Иногда он делает 3 нормально, а затем выдает ошибку, иногда 7, иногда только 1 или иногда делает 27 ok и не вызывает ошибок. Я не вижу, где проблема, поскольку 27 возвращенных объектов данных всегда одинаковы.

SyntaxError: Unexpected token < 
    at Object.parse (native) 
    at Request._callback (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/borrar_final.js:111:29) 
    at Request.self.callback (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:129:22) 
    at Request.EventEmitter.emit (events.js:98:17) 
    at Request.<anonymous> (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:873:14) 
    at Request.EventEmitter.emit (events.js:117:20) 
    at IncomingMessage.<anonymous> (/Users/nofunat88/Documents/test/nodejs-express-ajax-test/node_modules/request/request.js:824:12) 
    at IncomingMessage.EventEmitter.emit (events.js:117:20) 
    at _stream_readable.js:920:16 
    at process._tickCallback (node.js:415:13) 

С уважением,

+0

Hey Aitor, У меня такая же ошибка, но ошибка проверки не решена. Я не знаю, как его прерывисто. У вас есть другое решение? – Kishorevarma

+0

Извините, я решил так, возможно, вам стоит открыть свой собственный поток ... – Egidi

ответ

1

Вы должны проверить, если произошла ошибка во время запроса, а затем - анализирующее тела.

request(url,function (err, resp, body){ 
       if (err) { 
        console.log(err); 
       } else { 
        body = JSON.parse(body); 
       } 
+0

Я действительно не понимаю, почему, но после добавления проверки на наличие ошибок он больше не отображает никаких синтаксических ошибок! – Egidi

Смежные вопросы