From 2baa3d837d8b47bf792ab73ad333834024f76c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20Born=C3=B6?= Date: Fri, 25 Nov 2022 12:27:26 +0100 Subject: [PATCH 1/2] Only throw if page didn't get exported --- packages/next/export/worker.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/next/export/worker.ts b/packages/next/export/worker.ts index d3b864290aa2..9ee4a4d7f62c 100644 --- a/packages/next/export/worker.ts +++ b/packages/next/export/worker.ts @@ -328,18 +328,16 @@ export default async function exportPage({ const revalidate = (curRenderOpts as any).revalidate results.fromBuildExportRevalidate = revalidate - if (isDynamicError) { - throw new Error( - `Page with dynamic = "error" encountered dynamic data method ${path}.` - ) - } - if (revalidate !== 0) { await promises.writeFile(htmlFilepath, html ?? '', 'utf8') await promises.writeFile( htmlFilepath.replace(/\.html$/, '.rsc'), flightData ) + } else if (isDynamicError) { + throw new Error( + `Page with dynamic = "error" encountered dynamic data method ${path}.` + ) } } catch (err: any) { if ( From 61e73c4d056a55fe1c9fca6757473bc2d01c4bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20Born=C3=B6?= Date: Fri, 25 Nov 2022 12:27:46 +0100 Subject: [PATCH 2/2] Update tests --- test/e2e/app-dir/app-static.test.ts | 8 ++++++++ test/e2e/app-dir/app-static/app/dynamic-error/page.js | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 test/e2e/app-dir/app-static/app/dynamic-error/page.js diff --git a/test/e2e/app-dir/app-static.test.ts b/test/e2e/app-dir/app-static.test.ts index 394d9d2eeca8..4fb6309d9066 100644 --- a/test/e2e/app-dir/app-static.test.ts +++ b/test/e2e/app-dir/app-static.test.ts @@ -51,6 +51,9 @@ describe('app-dir static/dynamic handling', () => { 'blog/tim.rsc', 'blog/tim/first-post.html', 'blog/tim/first-post.rsc', + 'dynamic-error.html', + 'dynamic-error.rsc', + 'dynamic-error/page.js', 'dynamic-no-gen-params-ssr/[slug]/page.js', 'dynamic-no-gen-params/[slug]/page.js', 'force-static/[slug]/page.js', @@ -107,6 +110,11 @@ describe('app-dir static/dynamic handling', () => { srcRoute: '/blog/[author]/[slug]', dataRoute: '/blog/tim/first-post.rsc', }, + '/dynamic-error': { + dataRoute: '/dynamic-error.rsc', + initialRevalidateSeconds: false, + srcRoute: '/dynamic-error', + }, '/blog/seb/second-post': { initialRevalidateSeconds: false, srcRoute: '/blog/[author]/[slug]', diff --git a/test/e2e/app-dir/app-static/app/dynamic-error/page.js b/test/e2e/app-dir/app-static/app/dynamic-error/page.js new file mode 100644 index 000000000000..a7f6beedf90d --- /dev/null +++ b/test/e2e/app-dir/app-static/app/dynamic-error/page.js @@ -0,0 +1,5 @@ +export const dynamic = 'error' + +export default function Page() { + return

Dynamic error

+}