From cc154141bd83fdfba1fe51e6d7df792eef0e02eb Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Sat, 21 Mar 2026 18:08:17 -0500 Subject: [PATCH] puppeteer handling change --- src/index.js | 16 ++++++++++------ src/services/pdf-service.js | 29 +++++++++++++++++++---------- 2 files changed, 29 insertions(+), 16 deletions(-) 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(); + } + } } /**