diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index f9e2affca13fa..06a3ecdfe040a 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -822,7 +822,7 @@ jobs: testDevLTS, testProdLTS, testDevE2ELTS, - testprode2elts, + testProdE2ELTS, ] steps: - run: exit 0 diff --git a/packages/next/src/server/lib/patch-fetch.ts b/packages/next/src/server/lib/patch-fetch.ts index 7c4aea500afa9..ae77e000e97e9 100644 --- a/packages/next/src/server/lib/patch-fetch.ts +++ b/packages/next/src/server/lib/patch-fetch.ts @@ -14,10 +14,9 @@ export function patchFetch({ serverHooks: typeof import('../../client/components/hooks-server-context') staticGenerationAsyncStorage: StaticGenerationAsyncStorage }) { - if ((globalThis.fetch as any).patched) return + if ((fetch as any).__nextPatched) return const { DynamicServerError } = serverHooks - const originFetch = fetch // @ts-expect-error - we're patching fetch @@ -159,7 +158,8 @@ export function patchFetch({ revalidate > 0 ) { let base64Body = '' - const arrayBuffer = await res.arrayBuffer() + const resBlob = await res.blob() + const arrayBuffer = await resBlob.arrayBuffer() if (process.env.NEXT_RUNTIME === 'edge') { const { encode } = @@ -186,7 +186,8 @@ export function patchFetch({ } catch (err) { console.warn(`Failed to set fetch cache`, input, err) } - return new Response(arrayBuffer, { + + return new Response(resBlob, { headers: res.headers, status: res.status, }) @@ -291,5 +292,5 @@ export function patchFetch({ return doOriginalFetch() } ) - ;(globalThis.fetch as any).patched = true + ;(fetch as any).__nextPatched = true } diff --git a/test/e2e/app-dir/app-static/app-static.test.ts b/test/e2e/app-dir/app-static/app-static.test.ts index 15d77cbcfb05f..7bb2e55ad5986 100644 --- a/test/e2e/app-dir/app-static/app-static.test.ts +++ b/test/e2e/app-dir/app-static/app-static.test.ts @@ -555,7 +555,6 @@ createNextDescribe( expect($2('#data-body1').text()).toBe(dataBody1) expect($2('#data-body2').text()).toBe(dataBody2) expect($2('#data-body3').text()).toBe(dataBody3) - expect($2('#data-body4').text()).toBe(dataBody4) return 'success' }, 'success') }) diff --git a/test/e2e/app-dir/app-static/app/variable-revalidate/post-method-cached/page.js b/test/e2e/app-dir/app-static/app/variable-revalidate/post-method-cached/page.js index fd52811b2084a..ba6f796e160a3 100644 --- a/test/e2e/app-dir/app-static/app/variable-revalidate/post-method-cached/page.js +++ b/test/e2e/app-dir/app-static/app/variable-revalidate/post-method-cached/page.js @@ -1,5 +1,3 @@ -import { FormData, Blob } from 'next/dist/compiled/@edge-runtime/primitives' - const fetchRetry = async (url, init) => { for (let i = 0; i < 5; i++) { try { @@ -52,23 +50,7 @@ export default async function Page() { } ).then((res) => res.text()) - const formData = new FormData() - formData.append('hello', 'value') - formData.append('another', new Blob(['some text'], { type: 'text/plain' })) - formData.append('another', 'text') - const dataWithBody3 = await fetchRetry( - 'https://next-data-api-endpoint.vercel.app/api/random', - { - method: 'POST', - body: formData, - next: { - revalidate: 10, - }, - } - ).then((res) => res.text()) - - const dataWithBody4 = await fetchRetry( 'https://next-data-api-endpoint.vercel.app/api/random', { method: 'POST', @@ -79,7 +61,7 @@ export default async function Page() { } ).then((res) => res.text()) - const dataWithBody5 = await fetchRetry( + const dataWithBody4 = await fetchRetry( 'https://next-data-api-endpoint.vercel.app/api/random', { method: 'POST', @@ -93,9 +75,8 @@ export default async function Page() {

{data}

{dataWithBody1}

{dataWithBody2}

-

{dataWithBody3}

+

{dataWithBody3}

{dataWithBody4}

-

{dataWithBody5}

) }