Skip to content

Commit c183096

Browse files
committed
fix: update puppeteer image handling to ensure browser closure
1 parent a890a17 commit c183096

File tree

1 file changed

+41
-40
lines changed

1 file changed

+41
-40
lines changed

assets/js/puppeteer-img.js

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -106,44 +106,45 @@ function _validateInteger(value) {
106106
}
107107
}
108108

109-
puppeteer
110-
.launch({
111-
devtools: false,
112-
args: ["--no-sandbox", "--disable-setuid-sandbox", "--single-process"],
113-
ignoreHTTPSErrors: true,
114-
})
115-
.then(async function (browser) {
116-
const MAX_WAITING_TIME_ACCESS_URL = 5000;
117-
118-
const page = await browser.newPage();
119-
await page.setViewport(viewportOptions);
120-
await page.goto(options.url, { waitUntil: "networkidle2" });
121-
122-
if (new URL(options.url).pathname.startsWith("/go/")) {
123-
console.log("Waiting for response");
124-
let responseEventOccurred = false;
125-
const responseHandler = (_event) => (responseEventOccurred = true);
126-
127-
const responseWatcher = new Promise(function (resolve, _reject) {
128-
setTimeout(() => {
129-
if (!responseEventOccurred) {
130-
resolve();
131-
} else {
132-
setTimeout(() => resolve(), MAX_WAITING_TIME_ACCESS_URL);
133-
}
134-
}, 500);
135-
});
136-
137-
page.on("response", responseHandler);
138-
139-
await Promise.race([responseWatcher, page.waitForNavigation()]);
140-
}
141-
142-
await page.focus("body");
143-
await page.screenshot(screenshotOptions);
144-
145-
await page.close();
146-
await browser.close();
147-
process.stdout.write(screenshotOptions.path);
148-
});
109+
const browser = await puppeteer.launch({
110+
devtools: false,
111+
args: ["--no-sandbox", "--disable-setuid-sandbox", "--single-process"],
112+
ignoreHTTPSErrors: true,
113+
});
114+
115+
try {
116+
const page = await browser.newPage();
117+
await page.setViewport(viewportOptions);
118+
await page.goto(options.url, { waitUntil: "networkidle2" });
119+
120+
if (new URL(options.url).pathname.startsWith("/go/")) {
121+
console.log("Waiting for response");
122+
let responseEventOccurred = false;
123+
const responseHandler = (_event) => (responseEventOccurred = true);
124+
125+
const responseWatcher = new Promise(function (resolve, _reject) {
126+
setTimeout(() => {
127+
if (!responseEventOccurred) {
128+
resolve();
129+
} else {
130+
setTimeout(() => resolve(), 5000);
131+
}
132+
}, 500);
133+
});
134+
135+
page.on("response", responseHandler);
136+
137+
await Promise.race([responseWatcher, page.waitForNavigation()]);
138+
}
139+
140+
await page.focus("body");
141+
await page.screenshot(screenshotOptions);
142+
process.stdout.write(screenshotOptions.path);
143+
144+
await page.close();
145+
} catch (e) {
146+
console.error(e);
147+
} finally {
148+
await browser.close();
149+
}
149150
})();

0 commit comments

Comments
 (0)