From ddc63d8bccfc2e64ae0f6525ced7bbd5485d3288 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Wed, 2 Nov 2022 17:02:47 +0100 Subject: [PATCH] Ensure edge runtime doesn't propagate `cache` on fetch as Cloudflare doesn't support it. --- packages/next/server/app-render.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index cda73f9dc016..277420c014b2 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -39,6 +39,8 @@ import { HeadManagerContext } from '../shared/lib/head-manager-context' import { Writable } from 'stream' import stringHash from 'next/dist/compiled/string-hash' +const isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge' + function preloadComponent(Component: any, props: any) { const prev = console.error // Hide invalid hook call warning when calling component @@ -238,7 +240,12 @@ function patchFetch(ComponentMod: any) { if (staticGenerationStore && isStaticGeneration) { if (init && typeof init === 'object') { - if (init.cache === 'no-store') { + const cache = init.cache + // Delete `cache` property as Cloudflare Workers will throw an error + if (isEdgeRuntime) { + delete init.cache + } + if (cache === 'no-store') { staticGenerationStore.fetchRevalidate = 0 // TODO: ensure this error isn't logged to the user // seems it's slipping through currently @@ -296,10 +303,9 @@ function useFlightResponse( const [renderStream, forwardStream] = readableStreamTee(req) const res = createFromReadableStream(renderStream, { - moduleMap: - process.env.NEXT_RUNTIME === 'edge' - ? serverComponentManifest.__edge_ssr_module_mapping__ - : serverComponentManifest.__ssr_module_mapping__, + moduleMap: isEdgeRuntime + ? serverComponentManifest.__edge_ssr_module_mapping__ + : serverComponentManifest.__ssr_module_mapping__, }) flightResponseRef.current = res