From af8b59e0240b3b6dd29f3e986d5239848a974574 Mon Sep 17 00:00:00 2001 From: openhands Date: Tue, 4 Aug 2026 18:05:01 +0200 Subject: [PATCH] fix: use dynamic imports for puppeteer to prevent Next.js build errors puppeteer-extra cannot be statically imported in Next.js server bundles. Using dynamic import() so puppeteer is only loaded at runtime, not at build time. --- src/lib/services/cf-fetch.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib/services/cf-fetch.ts b/src/lib/services/cf-fetch.ts index 68b04e1935..edd6414819 100644 --- a/src/lib/services/cf-fetch.ts +++ b/src/lib/services/cf-fetch.ts @@ -1,18 +1,16 @@ -import puppeteer from "puppeteer-extra"; -import StealthPlugin from "puppeteer-extra-plugin-stealth"; - -puppeteer.use(StealthPlugin()); - const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/125.0.0.0 Safari/537.36"; -let browser: Awaited> | null = null; +let browser: any = null; async function getBrowser() { if (browser) return browser; - browser = await puppeteer.launch({ + const puppeteer = await import("puppeteer-extra"); + const StealthPlugin = await import("puppeteer-extra-plugin-stealth"); + puppeteer.default.use(StealthPlugin.default()); + browser = await puppeteer.default.launch({ headless: true, args: [ "--no-sandbox",