Здравствуйте! Не могу разобраться в чем проблема - при парсинге выдает ошибку Socket hang up, после чего массив companiesList почему то опустошается. Кто может подсказать - в чем ошибка то? Или хотябы где ее искать.
Мой код:
const tress = require('tress')
const needle = require('needle');
const cheerio = require('cheerio');
const config = require('../config.json')
const resolveURL = require('url').resolve;
module.exports = function (vacancyUrls) {
// find links to vacancies in vacancies list by url
const findCompanyLink = (vacancyUrl) => new Promise ((resolve, reject) => {
let companiesList = []
const q = tress((url, callback) => {
needle.get(url, function(err, res) {
if (err) console.log(err, companiesList.length, url)
if (res && res.body) {
const $ = cheerio.load(res.body);
companiesList.push($('dd>a').attr('href'))
}
callback()
})
}, 10000)
q.drain = function(){
resolve(companiesList)
}
q.push(vacancyUrl)
})
let promises = []
vacancyUrls.forEach(vacancyUrl => {
promises.push(findCompanyLink(config.baseUrl + vacancyUrl))
})
return Promise.all(promises)
}
Как тут устроено - модуль принимает массив ссылок на вакансии. Выкачивает эти страницы с помощью метода findCompanyLink, который пушит ссылку на компанию, опубликовавшую эту вакансию.
Иногда в err приходит ошибка о которой писал. Вот и вопрос - как "обойти" такую страницу, не положив весь процесс, и не испортив массив companiesList ?