У меня есть этот код, чтобы вытащить новостную ленту со стороннего веб-сайта с помощью API. Он настроен на запуск каждые 5 секунд и получение любых новостных транзакций, которые могут произойти. Проблема, по-видимому, заключается в том, что новых транзакций не происходит.
Добавив process.on('uncaught exception', function(error){ console.log("hmph") }) задание cron может продолжиться через 5 секунд, поэтому у меня возник соблазн оставить его как есть; однако я добавил console.log("hmph") и теперь запутался.
В первый раз консоль напишет hmph. Через 5 секунд будет написано хмф хмф
и так далее. Я знаю, что должен что-то упустить, но я не совсем уверен, что именно. Я пытался в операторе else сделать request.end(), но ошибка все еще срабатывает.
Без process.on('uncaught...') возникает ошибка:
events.js:71 выбрасывать аргументы[1]; // Необработанное событие «ошибка» ^ Ошибка: ошибка разбора в Socket.socketOnData (http.js:1367:20) в TCP.onread (net.js:403:27)
с proccess.on('uncaught...') console.log(ошибка):
{ [Ошибка: Ошибка синтаксического анализа] bytesParsed: 161, код: «HPE_INVALID_CONSTANT» }
Как мне правильно обработать эту ошибку?
Сокращенный код:
var job = new cronJob('*/5 * * * * *', function(){
var request = http.get({
host: 'www.example.com',
path: '/news_feed?apicode=myapicode',
port: 80,
headers: { 'accept-encoding': 'gzip' }
})
request.on('response', function(response){
if (response.statusCode == 200){
// gunzip response, save response to mongodb
}
else
{
// here is where the error is occuring
process.on('uncaughtException',function(error){
console.log(error);
console.log("hmph");
}
});
}, null, true);