mirror of
https://github.com/khairul169/code-share.git
synced 2025-04-28 16:49:36 +07:00
40 lines
865 B
TypeScript
40 lines
865 B
TypeScript
import puppeteer, { Browser } from "puppeteer";
|
|
|
|
let browser: Browser | null = null;
|
|
let closeHandler: any;
|
|
|
|
export const screenshot = async (slug: string) => {
|
|
try {
|
|
if (!browser) {
|
|
browser = await puppeteer.launch({
|
|
headless: true,
|
|
args: ["--no-sandbox"],
|
|
});
|
|
}
|
|
|
|
const page = await browser.newPage();
|
|
|
|
await page.setViewport({ width: 512, height: 340 });
|
|
await page.goto(`http://localhost:3000/api/preview/${slug}/index.html`, {
|
|
waitUntil: "networkidle0",
|
|
timeout: 5000,
|
|
});
|
|
const result = await page.screenshot();
|
|
await page.close();
|
|
|
|
if (closeHandler) {
|
|
clearTimeout(closeHandler);
|
|
}
|
|
|
|
closeHandler = setTimeout(() => {
|
|
browser?.close();
|
|
browser = null;
|
|
closeHandler = null;
|
|
}, 60000);
|
|
|
|
return result;
|
|
} catch (err) {
|
|
return null;
|
|
}
|
|
};
|