2016-09-16 1 views
0

Вот мой код:JSON.parse на Node.js не будет работать каждый раз

var req = https.request(options, (res) => { 

    res.on('data', (d) => { 
    var data = JSON.parse(d); 

    >> REDIS ACTION << 
    } 
    }); 
}); 
req.end(); 

Я предполагаю, что JSON может быть, и большую часть времени большой, но я не понимаю эту ошибку :

>> JSON DATA TRUNCATED, AND THIS DON'T HAVE TO BE DISPLAYED << 

SyntaxError: Unexpected end of input 
    at Object.parse (native) 
    at IncomingMessage.<anonymous> (A:\p 
    at emitOne (events.js:77:13) 
    at IncomingMessage.emit (events.js:1 
    at readableAddChunk (_stream_readabl 
    at IncomingMessage.Readable.push (_s 
    at HTTPParser.parserOnBody (_http_co 
    at TLSSocket.socketOnData (_http_cli 
    at emitOne (events.js:77:13) 
    at TLSSocket.emit (events.js:169:7) 

Не могли бы вы объяснить мне, где моя ошибка и как с этим справиться?

+1

Какой тип запроса вы выполнять. Может ли быть, что возвращаемые данные не найдены? Или код плохого статуса? – Nix

+2

Бьюсь об заклад, ваш запрос довольно большой. Я предполагаю, что он пытается разобрать строку JSON, которая не закончена, например. он пытается разобрать '' {'stuff': 'this is' 'до получения' 'not finished '}" ' – cdbajorin

+0

Это запрос GET в приложении REST API, который я не являюсь владельцем. И код состояния 200 при возникновении ошибок (он не будет возникать каждый раз). –

ответ

0

Как сказал cdbajorin, мне нужно было составить свои данные, потому что это происходит, когда узел пытается выполнить команду, но весь запрос уже не получен.

Вот код, который решил мою проблему:

var req = https.request(options, (res) => { 
    var response = ''; 

    res.on('data', (d) => { 
    response += d; 
    }) 

    res.on('end',() => { 
    var data = JSON.parse(response); 

    //EVERYTHING ELSE 
     }); 
    } 
    }); 
}); 
req.end(); 

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

  • Нет связанных вопросов^_^