Кто-нибудь когда-либо пытался справиться с ошибками подключения к сети с помощью Puppeteer? Я попытался запустить случайную страницу и проверить, не получаю ли я ошибки до тех пор, пока она не будет работать (эта попытка находится в цикле for):
try{
responseAwait = await page1.goto('https://www.residentadvisor.net/dj.aspx?country=01')
} catch (err) {
console.log('Page load fail : '+ err)
if (err == 'Error: net::ERR_INTERNET_DISCONNECTED' || err == 'Error: net::ERR_NETWORK_CHANGED' || err == 'Error: net::ERR_NAME_NOT_RESOLVED'){
let refreshIntervalId = setInterval(() =>{
handleConnexionError(refreshIntervalId,page1)
}, 5000)
}
}
И вот функция, которую я использую, чтобы проверить, вернулась ли сеть:
async function handleConnexionError(refreshIntervalId,page1){
console.log('Retrying to connect')
let errorHandle = true
await page1.goto('https://www.residentadvisor.net/dj.aspx?country=01').catch(() => {
errorHandle = false
})
if (errorHandle) {
console.log('Succesfully Reconnected')
clearInterval(refreshIntervalId)
return true
}
else {
console.log('Connection Fail Retrying in 10 sec ...')
}
}
Но он не работает должным образом, поскольку скрипт продолжает работать и циклы по всему циклу for, даже если ошибка произошла в ожидании...
Вот пример того, как я проверяю ошибки своего приложения
GeneralFunctions.js
validarErrores: (error, escenario)=>{
console.log('${error.toString()}'.bgRed);
if (typeof escenario == 'undefined'){
return self.mensajeError('Error 500 - Objeto indefinido');
}
const { TimeoutError } = require('puppeteer/Errors');
if (error instanceof TimeoutError) {
if (error.toString().search('Navigation Timeout') != -1) {
return self.mensajeError('Se produjo un error de <strong> Timeout </strong> al navegar');
}
for (pasos in escenario){
for(prop in escenario[pasos]){
if (error.toString().search(escenario[pasos][prop]) != -1) {
return self.mensajeError('Se produjo un error al <strong> no poder localizar </strong> el campo <strong>${escenario[pasos][prop]}</strong>');
}
}
}
return self.mensajeError('Error 500 - ${error.toString}');
}
else if (error instanceof Error) {
switch (true) {
case (error.toString().includes('ERR_INTERNET_DISCONNECTED')):
return self.mensajeError('No hay conexión fisica a la red Local');
break;
case (error.toString().includes('ERR_CONNECTION_TIMED_OUT')):
return self.mensajeError('La aplicacion no se encuentra en línea');
break;
case (error.toString().includes('ERR_CONNECTION_REFUSED')):
return self.mensajeError('La dirección de la aplicacion no es correcta');
break;
default:
return self.mensajeError('La aplicación a encontrado el ${error}');
break;
}
}
// throw new Error(error);
}
main.js
(async () => {
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
try {
await page.setViewport({ "width": 1280, "height": 720 });
// Do someting
} catch (e) {
${funcionesGenerales.validarErrores(e, selectores);
}finally{
await browser.close();
}
})();