diff --git a/src/index.js b/src/index.js index 109679b..965b4a8 100644 --- a/src/index.js +++ b/src/index.js @@ -43,8 +43,8 @@ async function initBrowser() { '--disable-dev-shm-usage', '--disable-gpu', '--disable-software-rasterizer', - '--no-zygote', - '--single-process' + '--no-zygote' + // '--single-process' WURDE ENTFERNT! ], protocolTimeout: 180000, timeout: 180000 @@ -53,13 +53,17 @@ async function initBrowser() { // Pass browser to PDF service setBrowser(browser); - - // Restart browser if it crashes + + // Restart browser if it crashes (mit Atempause!) browser.on('disconnected', () => { - console.log('[BROWSER] Browser disconnected, restarting...'); + console.log('[BROWSER] Browser disconnected. Waiting 5 seconds before restarting...'); browser = null; setBrowser(null); - initBrowser(); + + // 5 Sekunden warten, bevor ein Neustart versucht wird + setTimeout(() => { + initBrowser(); + }, 5000); }); } return browser; diff --git a/src/services/pdf-service.js b/src/services/pdf-service.js index 4eea067..b04d086 100644 --- a/src/services/pdf-service.js +++ b/src/services/pdf-service.js @@ -33,17 +33,26 @@ async function generatePdfFromHtml(html, options = {}) { } const page = await browser.newPage(); - //await page.setContent(html, { waitUntil: 'networkidle0', timeout: 60000 }); - await page.setContent(html, { waitUntil: 'load', timeout: 5000 }); - - const pdf = await page.pdf({ - format, - printBackground, - margin - }); - await page.close(); - return pdf; + try { + // Erhöhtes Timeout: 5 Sekunden sind unter Docker manchmal zu wenig. + // Besser auf 15 Sekunden (15000) setzen, um den Fehler von vornherein zu vermeiden. + await page.setContent(html, { waitUntil: 'load', timeout: 15000 }); + + const pdf = await page.pdf({ + format, + printBackground, + margin + }); + + return pdf; + } finally { + // Dieser Block wird IMMER ausgeführt, selbst wenn oben ein Fehler fliegt. + // Der Tab wird also zu 100% wieder geschlossen. + if (page) { + await page.close(); + } + } } /**