From 545fbd5b32486b03fabca608d0846b3ef70c57cb Mon Sep 17 00:00:00 2001 From: James Date: Thu, 6 Feb 2025 21:57:21 +0000 Subject: [PATCH 1/4] use dynamic import for prerender manifest in e2e --- examples/app-router/app/api/isr/route.ts | 32 +++++++++++++++--------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/examples/app-router/app/api/isr/route.ts b/examples/app-router/app/api/isr/route.ts index e14cdfe0d..808ebb777 100644 --- a/examples/app-router/app/api/isr/route.ts +++ b/examples/app-router/app/api/isr/route.ts @@ -1,5 +1,3 @@ -import fs from "node:fs/promises"; -import path from "node:path"; import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; @@ -7,18 +5,28 @@ export const dynamic = "force-dynamic"; // This endpoint simulates an on demand revalidation request export async function GET(request: NextRequest) { - const cwd = process.cwd(); - const prerenderManifest = await fs.readFile( - path.join(cwd, ".next/prerender-manifest.json"), - "utf-8", - ); - const manifest = JSON.parse(prerenderManifest); + let manifest: { preview: { previewModeId: string } }; + // This fails at build time when next.js tries to evaluate the route + try { + const prerenderManifest = await import( + // @ts-expect-error + /* webpackIgnore: true */ "./.next/prerender-manifest.json" + ); + manifest = prerenderManifest.default; + } catch { + return new Response(null, { status: 500 }); + } + const previewId = manifest.preview.previewModeId; - const result = await fetch(`https://${request.headers.get("host")}/isr`, { - headers: { "x-prerender-revalidate": previewId }, - method: "HEAD", - }); + const host = request.headers.get("host"); + const result = await fetch( + `http${host?.includes("localhost") ? "" : "s"}://${host}/isr`, + { + headers: { "x-prerender-revalidate": previewId }, + method: "HEAD", + }, + ); return NextResponse.json({ status: 200, From 02944a5f15935df19328f89c028f3d7b3abbcc26 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 7 Feb 2025 14:38:22 +0000 Subject: [PATCH 2/4] use suggested path --- examples/app-router/app/api/isr/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/app-router/app/api/isr/route.ts b/examples/app-router/app/api/isr/route.ts index 808ebb777..b416c4281 100644 --- a/examples/app-router/app/api/isr/route.ts +++ b/examples/app-router/app/api/isr/route.ts @@ -10,7 +10,7 @@ export async function GET(request: NextRequest) { try { const prerenderManifest = await import( // @ts-expect-error - /* webpackIgnore: true */ "./.next/prerender-manifest.json" + /* webpackIgnore: true */ "../../../../prerender-manifest.json" ); manifest = prerenderManifest.default; } catch { From a337c0d9dcae7177f34f9a47db5c71c116393dff Mon Sep 17 00:00:00 2001 From: Dorseuil Nicolas Date: Fri, 7 Feb 2025 16:08:37 +0100 Subject: [PATCH 3/4] fix e2e --- examples/app-router/app/api/isr/route.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/app-router/app/api/isr/route.ts b/examples/app-router/app/api/isr/route.ts index b416c4281..689de6429 100644 --- a/examples/app-router/app/api/isr/route.ts +++ b/examples/app-router/app/api/isr/route.ts @@ -10,16 +10,18 @@ export async function GET(request: NextRequest) { try { const prerenderManifest = await import( // @ts-expect-error - /* webpackIgnore: true */ "../../../../prerender-manifest.json" + /* webpackIgnore: true */ "../../../../prerender-manifest.json", + { assert: { type: "json" } } ); manifest = prerenderManifest.default; - } catch { + } catch (e) { + console.error(e); return new Response(null, { status: 500 }); } const previewId = manifest.preview.previewModeId; - const host = request.headers.get("host"); + const host = request.headers.get("host") ?? "localhost:3001"; const result = await fetch( `http${host?.includes("localhost") ? "" : "s"}://${host}/isr`, { From 57c5e8f181a4a7e6ec23a702ea9cc806eb8211bc Mon Sep 17 00:00:00 2001 From: James Anderson Date: Fri, 7 Feb 2025 15:56:36 +0000 Subject: [PATCH 4/4] use with instead of assert --- examples/app-router/app/api/isr/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/app-router/app/api/isr/route.ts b/examples/app-router/app/api/isr/route.ts index 689de6429..b9d7052a5 100644 --- a/examples/app-router/app/api/isr/route.ts +++ b/examples/app-router/app/api/isr/route.ts @@ -11,7 +11,7 @@ export async function GET(request: NextRequest) { const prerenderManifest = await import( // @ts-expect-error /* webpackIgnore: true */ "../../../../prerender-manifest.json", - { assert: { type: "json" } } + { with: { type: "json" } } ); manifest = prerenderManifest.default; } catch (e) {