From b775f5a58aef55a43bcfffc5c5ab4a4ba18fd3a0 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 30 Aug 2022 15:33:34 -0700 Subject: [PATCH 1/3] Fix edge rewrite handling --- packages/next/server/base-server.ts | 12 ++++++++++++ packages/next/server/web-server.ts | 2 ++ test/e2e/switchable-runtime/index.test.ts | 1 + 3 files changed, 15 insertions(+) diff --git a/packages/next/server/base-server.ts b/packages/next/server/base-server.ts index a6da2bd95780..37e493e62f42 100644 --- a/packages/next/server/base-server.ts +++ b/packages/next/server/base-server.ts @@ -1578,6 +1578,18 @@ export default abstract class Server { if (result !== false) return result } } + + // currently edge functions aren't receiving the x-matched-path + // header so we need to fallback to matching the current page + // when we weren't able to match via dynamic route to handle + // the rewrite case + // @ts-expect-error extended in child class web-server + if (this.serverOptions.webServerConfig) { + // @ts-expect-error extended in child class web-server + ctx.pathname = this.serverOptions.webServerConfig.page + const result = await this.renderPageComponent(ctx, bubbleNoFallback) + if (result !== false) return result + } } catch (error) { const err = getProperError(error) diff --git a/packages/next/server/web-server.ts b/packages/next/server/web-server.ts index 7afff576aea2..7de2e33944b2 100644 --- a/packages/next/server/web-server.ts +++ b/packages/next/server/web-server.ts @@ -328,6 +328,8 @@ export default class NextWebServer extends BaseServer { query: NextParsedUrlQuery, renderOpts: RenderOpts ): Promise { + console.log('web-server renderHTML', { url: req.url, pathname }) + const { pagesRenderToHTML, appRenderToHTML } = this.serverOptions.webServerConfig const curRenderToHTML = pagesRenderToHTML || appRenderToHTML diff --git a/test/e2e/switchable-runtime/index.test.ts b/test/e2e/switchable-runtime/index.test.ts index b7d1ab0efb96..c3062e1cad7f 100644 --- a/test/e2e/switchable-runtime/index.test.ts +++ b/test/e2e/switchable-runtime/index.test.ts @@ -16,6 +16,7 @@ function splitLines(text) { async function testRoute(appPort, url, { isStatic, isEdge }) { const html1 = await renderViaHTTP(appPort, url) + console.error({ html1 }) const renderedAt1 = +html1.match(/Time: (\d+)/)[1] expect(html1).toContain(`Runtime: ${isEdge ? 'Edge' : 'Node.js'}`) From cc7034e923f1d39d4791c10dc855eeafb4528998 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 30 Aug 2022 18:04:32 -0500 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Jiachi Liu --- packages/next/server/web-server.ts | 1 - test/e2e/switchable-runtime/index.test.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/next/server/web-server.ts b/packages/next/server/web-server.ts index 7de2e33944b2..0249737b0770 100644 --- a/packages/next/server/web-server.ts +++ b/packages/next/server/web-server.ts @@ -328,7 +328,6 @@ export default class NextWebServer extends BaseServer { query: NextParsedUrlQuery, renderOpts: RenderOpts ): Promise { - console.log('web-server renderHTML', { url: req.url, pathname }) const { pagesRenderToHTML, appRenderToHTML } = this.serverOptions.webServerConfig diff --git a/test/e2e/switchable-runtime/index.test.ts b/test/e2e/switchable-runtime/index.test.ts index c3062e1cad7f..b7d1ab0efb96 100644 --- a/test/e2e/switchable-runtime/index.test.ts +++ b/test/e2e/switchable-runtime/index.test.ts @@ -16,7 +16,6 @@ function splitLines(text) { async function testRoute(appPort, url, { isStatic, isEdge }) { const html1 = await renderViaHTTP(appPort, url) - console.error({ html1 }) const renderedAt1 = +html1.match(/Time: (\d+)/)[1] expect(html1).toContain(`Runtime: ${isEdge ? 'Edge' : 'Node.js'}`) From d9f6d1ea3700f7f2e5d0dd44249e497840a5b9c3 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 30 Aug 2022 16:11:19 -0700 Subject: [PATCH 3/3] lint-fix --- packages/next/server/web-server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/next/server/web-server.ts b/packages/next/server/web-server.ts index 0249737b0770..7afff576aea2 100644 --- a/packages/next/server/web-server.ts +++ b/packages/next/server/web-server.ts @@ -328,7 +328,6 @@ export default class NextWebServer extends BaseServer { query: NextParsedUrlQuery, renderOpts: RenderOpts ): Promise { - const { pagesRenderToHTML, appRenderToHTML } = this.serverOptions.webServerConfig const curRenderToHTML = pagesRenderToHTML || appRenderToHTML