Skip to content

Commit 1406bcb

Browse files
committed
fix: keep __nextDataReq query param working
1 parent c3e328c commit 1406bcb

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/run/handlers/server.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,15 @@ export default async (request: Request) => {
8383
},
8484
})
8585

86+
if (new URL(request.url).searchParams.get('__nextDataReq')) {
87+
const NEXT_REQUEST_META = Symbol.for('NextInternalRequestMeta')
88+
// @ts-expect-error NEXT_REQUEST_META doesn't exist in IncomingMessage type
89+
const meta = req[NEXT_REQUEST_META] ?? {}
90+
meta.isNextDataReq = true
91+
// @ts-expect-error NEXT_REQUEST_META doesn't exist in IncomingMessage type
92+
req[NEXT_REQUEST_META] = meta
93+
}
94+
8695
disableFaultyTransferEncodingHandling(res as unknown as ComputeJsOutgoingMessage)
8796

8897
const requestContext = getRequestContext() ?? createRequestContext()

tests/e2e/edge-middleware.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,23 @@ test('it should render OpenGraph image meta tag correctly', async ({ page, middl
5252
const size = await getImageSize(Buffer.from(imageBuffer), 'png')
5353
expect([size.width, size.height]).toEqual([1200, 630])
5454
})
55+
56+
test('json data rewrite works', async ({ middlewarePages }) => {
57+
const response = await fetch(
58+
`${middlewarePages.url}/_next/data/build-id/sha.json?__nextDataReq=1`,
59+
{
60+
headers: {
61+
'x-nextjs-data': '1',
62+
},
63+
},
64+
)
65+
66+
expect(response.ok).toBe(true)
67+
const body = await response.text()
68+
69+
expect(body).toMatch(/^{"pageProps":/)
70+
71+
const data = JSON.parse(body)
72+
73+
expect(data.pageProps.message).toBeDefined()
74+
})

tests/utils/create-e2e-fixture.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ export const fixtureFactories = {
325325
bun: () => createE2EFixture('simple', { packageManger: 'bun' }),
326326
middleware: () => createE2EFixture('middleware'),
327327
middlewareOg: () => createE2EFixture('middleware-og'),
328+
middlewarePages: () => createE2EFixture('middleware-pages'),
328329
pageRouter: () => createE2EFixture('page-router'),
329330
pageRouterBasePathI18n: () => createE2EFixture('page-router-base-path-i18n'),
330331
turborepo: () =>

0 commit comments

Comments
 (0)