diff --git a/packages/next/src/build/webpack/loaders/next-app-loader.ts b/packages/next/src/build/webpack/loaders/next-app-loader.ts index 728cc5f842..5d49a3a3e3 100644 --- a/packages/next/src/build/webpack/loaders/next-app-loader.ts +++ b/packages/next/src/build/webpack/loaders/next-app-loader.ts @@ -127,7 +127,6 @@ async function createAppRouteCode({ const isDynamicRouteExtension = pageExtensions.includes(ext) resolvedPagePath = `next-metadata-route-loader?${stringify({ - page, filePath: resolvedPagePath, isDynamicRouteExtension: isDynamicRouteExtension ? '1' : '0', })}!?${WEBPACK_RESOURCE_QUERIES.metadataRoute}` diff --git a/packages/next/src/build/webpack/loaders/next-metadata-route-loader.ts b/packages/next/src/build/webpack/loaders/next-metadata-route-loader.ts index b0cee835f9..e49475b52f 100644 --- a/packages/next/src/build/webpack/loaders/next-metadata-route-loader.ts +++ b/packages/next/src/build/webpack/loaders/next-metadata-route-loader.ts @@ -21,10 +21,10 @@ const cacheHeader = { } type MetadataRouteLoaderOptions = { - page: string + // Using separate argument to avoid json being parsed and hit error + // x-ref: https://github.com/vercel/next.js/pull/62615 filePath: string isDynamicRouteExtension: '1' | '0' - isDynamicMultiRoute: '1' | '0' } export function getFilenameAndExtension(resourcePath: string) { @@ -248,6 +248,7 @@ const nextMetadataRouterLoader: webpack.LoaderDefinitionFunction { + const { next } = nextTestSetup({ + files: __dirname, + skipStart: true, + }) + + it('should generate different content after replace the static metadata file', async () => { + await next.build() + + const faviconBuildContent = await next.readFile( + '.next/server/app/favicon.ico.body' + ) + const opengrpahImageBuildContent = await next.readFile( + '.next/server/app/opengraph-image.png.body' + ) + + const faviconMd5 = generateMD5(faviconBuildContent) + const opengraphImageMd5 = generateMD5(opengrpahImageBuildContent) + + // Update favicon and opengraph image + const newFaviconContent = await next.readFile('app/favicon.ico.new') + await next.patchFile('app/favicon.ico', newFaviconContent) + + const newOpengraphImageContent = await next.readFile( + 'app/opengraph-image.png.new' + ) + await next.patchFile('app/opengraph-image.png', newOpengraphImageContent) + + await next.build() + const faviconBuildContentNew = await next.readFile( + '.next/server/app/favicon.ico.body' + ) + const opengrpahImageBuildContentNew = await next.readFile( + '.next/server/app/opengraph-image.png.body' + ) + + const faviconMd5New = generateMD5(faviconBuildContentNew) + const opengraphImageMd5New = generateMD5(opengrpahImageBuildContentNew) + + expect(faviconMd5).not.toBe(faviconMd5New) + expect(opengraphImageMd5).not.toBe(opengraphImageMd5New) + }) +}) diff --git a/test/turbopack-build-tests-manifest.json b/test/turbopack-build-tests-manifest.json index 6ff821b171..c6ba6a53e9 100644 --- a/test/turbopack-build-tests-manifest.json +++ b/test/turbopack-build-tests-manifest.json @@ -15735,6 +15735,15 @@ "pending": [], "flakey": [], "runtimeError": false + }, + "test/production/app-dir/metadata-static-route-cache/metadata-static-route-cache.test.ts": { + "passed": [], + "failed": [ + "app dir - metadata static routes cache should generate different content after replace the static metadata file" + ], + "pending": [], + "flakey": [], + "runtimeError": false } }, "rules": {