From 9128b58654fdb7e07a909d6e8b742c28aed78a21 Mon Sep 17 00:00:00 2001 From: Zack Tanner Date: Mon, 30 Oct 2023 10:24:51 -0700 Subject: [PATCH] fix gsp tracing issue (#57766) This removes the ignores for dev react bundles which was added as an optimization but causes issues when react is imported from an ESM module since all requires are being analyzed for named exports. Fixes #57582 --- .../next/src/build/collect-build-traces.ts | 2 +- test/e2e/app-dir/app/standalone-gsp.test.ts | 88 +++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 test/e2e/app-dir/app/standalone-gsp.test.ts diff --git a/packages/next/src/build/collect-build-traces.ts b/packages/next/src/build/collect-build-traces.ts index 4a38017e52f98..9dde7a2952035 100644 --- a/packages/next/src/build/collect-build-traces.ts +++ b/packages/next/src/build/collect-build-traces.ts @@ -266,7 +266,6 @@ export async function collectBuildTraces({ const sharedIgnores = [ '**/next/dist/compiled/next-server/**/*.dev.js', - '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js', isStandalone ? null : '**/next/dist/compiled/jest-worker/**/*', '**/next/dist/compiled/webpack/(bundle4|bundle5).js', '**/node_modules/webpack5/**/*', @@ -294,6 +293,7 @@ export async function collectBuildTraces({ const serverIgnores = [ ...sharedIgnores, + '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js', '**/*.d.ts', '**/*.map', '**/next/dist/pages/**/*', diff --git a/test/e2e/app-dir/app/standalone-gsp.test.ts b/test/e2e/app-dir/app/standalone-gsp.test.ts new file mode 100644 index 0000000000000..99a281078ac58 --- /dev/null +++ b/test/e2e/app-dir/app/standalone-gsp.test.ts @@ -0,0 +1,88 @@ +import { createNextDescribe } from 'e2e-utils' +import fs from 'fs-extra' +import os from 'os' +import path from 'path' +import { + findPort, + initNextServerScript, + killApp, + fetchViaHTTP, +} from 'next-test-utils' + +if (!(globalThis as any).isNextStart) { + it('should skip for non-next start', () => {}) +} else { + createNextDescribe( + 'output: standalone with getStaticProps', + { + files: __dirname, + skipStart: true, + dependencies: { + swr: 'latest', + }, + }, + ({ next }) => { + beforeAll(async () => { + await next.patchFile( + 'next.config.js', + (await next.readFile('next.config.js')).replace('// output', 'output') + ) + + await next.patchFile( + 'pages/gsp.js', + ` + import useSWR from 'swr' + + console.log(useSWR) + + export default function Home() { + return

Hello

+ } + + export async function getStaticProps() { + return { + props: { + foo: "bar", + }, + }; + } + ` + ) + + await next.start() + }) + + it('should work correctly with output standalone', async () => { + const tmpFolder = path.join( + os.tmpdir(), + 'next-standalone-' + Date.now() + ) + await fs.move(path.join(next.testDir, '.next/standalone'), tmpFolder) + let server: any + + try { + const testServer = path.join(tmpFolder, 'server.js') + const appPort = await findPort() + server = await initNextServerScript( + testServer, + /- Local:/, + { + ...process.env, + PORT: appPort.toString(), + }, + undefined, + { + cwd: tmpFolder, + } + ) + + const res = await fetchViaHTTP(appPort, '/gsp') + expect(res.status).toBe(200) + } finally { + if (server) await killApp(server) + await fs.remove(tmpFolder) + } + }) + } + ) +}