From 706b2fe27242fa38df8806baf58c350a56155f26 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Sun, 31 May 2026 12:37:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcloudflare=E6=89=93=E5=8C=85?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- next.config.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/next.config.js b/next.config.js index 44ed58e..c19235f 100644 --- a/next.config.js +++ b/next.config.js @@ -18,6 +18,10 @@ const optimizedPackageImports = [ const serverExternalPackages = [ '@upstash/redis', + // @upstash/redis depends on uncrypto, whose package exports include a + // workerd condition. OpenNext needs it traced as a full external package, + // otherwise .open-next may contain package.json without dist/crypto.web.mjs. + 'uncrypto', '@vercel/postgres', 'better-sqlite3', 'cheerio', @@ -48,7 +52,7 @@ const createNextConfig = (phase) => { instrumentationHook: process.env.NODE_ENV === 'production' && !isCloudflare, optimizePackageImports: optimizedPackageImports, serverComponentsExternalPackages: serverExternalPackages, - webpackBuildWorker: true, + webpackBuildWorker: !isCloudflare, }, // Uncoment to add domain whitelist @@ -125,7 +129,10 @@ const createNextConfig = (phase) => { }, }; - if (isDevelopment) { + // next-pwa runs an additional webpack pass that is not needed for the + // Cloudflare/OpenNext worker bundle and can make Cloudflare builds fail with + // a generic "Build failed because of webpack errors" message. + if (isDevelopment || isCloudflare) { return nextConfig; }