From 4624b591de419c3ecf47d258acc9c5ee6b21ea81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Thu, 1 Dec 2022 10:11:48 +0100 Subject: [PATCH 1/3] Add a dev warning about missing `` when using `useServerInsertedHTML` --- packages/next/server/node-web-streams-helper.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/next/server/node-web-streams-helper.ts b/packages/next/server/node-web-streams-helper.ts index c82ff473824f2..24c70911176b6 100644 --- a/packages/next/server/node-web-streams-helper.ts +++ b/packages/next/server/node-web-streams-helper.ts @@ -181,6 +181,11 @@ function createHeadInsertionTransformStream( freezing = true inserted = true } + if (process.env.NODE_ENV !== 'production' && insertion && !inserted) { + console.error( + `server inserted HTML couldn't be inserted into the stream. You are missing '' element in your layout - please add it.` + ) + } } if (!inserted) { From b62ea9eccf07b749ead658ca08aacb07f7981984 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Fri, 2 Dec 2022 16:30:37 +0100 Subject: [PATCH 2/3] rm warning --- packages/next/server/node-web-streams-helper.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/next/server/node-web-streams-helper.ts b/packages/next/server/node-web-streams-helper.ts index 24c70911176b6..c82ff473824f2 100644 --- a/packages/next/server/node-web-streams-helper.ts +++ b/packages/next/server/node-web-streams-helper.ts @@ -181,11 +181,6 @@ function createHeadInsertionTransformStream( freezing = true inserted = true } - if (process.env.NODE_ENV !== 'production' && insertion && !inserted) { - console.error( - `server inserted HTML couldn't be inserted into the stream. You are missing '' element in your layout - please add it.` - ) - } } if (!inserted) { From ce7994620c8d98c1b1b3a005fc362bf14c06b785 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Fri, 2 Dec 2022 16:30:43 +0100 Subject: [PATCH 3/3] Revert "Root layout head not required (#41621)" This reverts commit bdc53ef65182810fbc65273d293fdc256c07b0c3. --- .../internal/container/RootLayoutError.tsx | 2 +- packages/next/server/node-web-streams-helper.ts | 7 ++++++- test/e2e/app-dir/root-layout.test.ts | 12 ++++++------ .../app/(required-tags)/has-tags/layout.js | 3 +++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/next/client/components/react-dev-overlay/internal/container/RootLayoutError.tsx b/packages/next/client/components/react-dev-overlay/internal/container/RootLayoutError.tsx index e9d9648b87f67..5e68fb856175e 100644 --- a/packages/next/client/components/react-dev-overlay/internal/container/RootLayoutError.tsx +++ b/packages/next/client/components/react-dev-overlay/internal/container/RootLayoutError.tsx @@ -14,7 +14,7 @@ export type RootLayoutErrorProps = { missingTags: string[] } export const RootLayoutError: React.FC = function BuildError({ missingTags }) { const message = - 'Please make sure to include the following tags in your root layout: , .\n\n' + + 'Please make sure to include the following tags in your root layout: , , .\n\n' + `Missing required root layout tag${ missingTags.length === 1 ? '' : 's' }: ` + diff --git a/packages/next/server/node-web-streams-helper.ts b/packages/next/server/node-web-streams-helper.ts index c82ff473824f2..a2062a66778f2 100644 --- a/packages/next/server/node-web-streams-helper.ts +++ b/packages/next/server/node-web-streams-helper.ts @@ -288,15 +288,19 @@ export function createRootLayoutValidatorStream( getTree: () => FlightRouterState ): TransformStream { let foundHtml = false + let foundHead = false let foundBody = false return new TransformStream({ async transform(chunk, controller) { - if (!foundHtml || !foundBody) { + if (!foundHtml || !foundHead || !foundBody) { const content = decodeText(chunk) if (!foundHtml && content.includes(' { expect(await hasRedbox(browser, true)).toBe(true) expect(await getRedboxSource(browser)).toMatchInlineSnapshot(` - "Please make sure to include the following tags in your root layout: , . + "Please make sure to include the following tags in your root layout: , , . - Missing required root layout tags: html, body" + Missing required root layout tags: html, head, body" `) }) @@ -54,9 +54,9 @@ describe('app-dir root layout', () => { expect(await hasRedbox(browser, true)).toBe(true) expect(await getRedboxSource(browser)).toMatchInlineSnapshot(` - "Please make sure to include the following tags in your root layout: , . + "Please make sure to include the following tags in your root layout: , , . - Missing required root layout tags: html, body" + Missing required root layout tags: html, head, body" `) }) @@ -67,9 +67,9 @@ describe('app-dir root layout', () => { expect(await hasRedbox(browser, true)).toBe(true) expect(await getRedboxSource(browser)).toMatchInlineSnapshot(` - "Please make sure to include the following tags in your root layout: , . + "Please make sure to include the following tags in your root layout: , , . - Missing required root layout tags: html, body" + Missing required root layout tags: html, head, body" `) }) }) diff --git a/test/e2e/app-dir/root-layout/app/(required-tags)/has-tags/layout.js b/test/e2e/app-dir/root-layout/app/(required-tags)/has-tags/layout.js index 7519206f5c7b3..f8fd9c6d9b3ea 100644 --- a/test/e2e/app-dir/root-layout/app/(required-tags)/has-tags/layout.js +++ b/test/e2e/app-dir/root-layout/app/(required-tags)/has-tags/layout.js @@ -4,6 +4,9 @@ export const revalidate = 0 export default function Root({ children }) { return ( + + Hello World + {children} )