From e8fd18a5056df3d19103e5c22b6784f888235632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20Born=C3=B6?= Date: Fri, 25 Nov 2022 09:36:26 +0100 Subject: [PATCH] Get correct chunks in flight-manifest on Windows (#43334) On Windows `cunkGroup.name` is `app\layout` rather than `app/layout`. This causes it to get the wrong chunks in `flight-manifest.json` for `next/script` in this case: ```json "chunks": ["webpack:webpack", "amp:amp"], ``` After checking for backslash: ```json "chunks":["app\\layout:app\\layout"], ``` fixes #42519 ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md) ## Documentation / Examples - [ ] Make sure the linting passes by running `pnpm build && pnpm lint` - [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md) --- .../next/build/webpack/plugins/flight-manifest-plugin.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/next/build/webpack/plugins/flight-manifest-plugin.ts b/packages/next/build/webpack/plugins/flight-manifest-plugin.ts index 00aefb985d64..7f0cd6476388 100644 --- a/packages/next/build/webpack/plugins/flight-manifest-plugin.ts +++ b/packages/next/build/webpack/plugins/flight-manifest-plugin.ts @@ -274,7 +274,10 @@ export class FlightManifestPlugin { moduleExportedKeys.forEach((name) => { // If the chunk is from `app/` chunkGroup, use it first. // This make sure not to load the overlapped chunk from `pages/` chunkGroup - if (!moduleExports[name] || chunkGroup.name?.startsWith('app/')) { + if ( + !moduleExports[name] || + (chunkGroup.name && /^app[\\/]/.test(chunkGroup.name)) + ) { const requiredChunks = getAppPathRequiredChunks() moduleExports[name] = {