From 24d1a6f760c190629b2b6c2746aeda993c075091 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 21 Jun 2022 12:42:02 -0500 Subject: [PATCH] Ensure next-server tracing uses tracing root config --- packages/next/build/index.ts | 3 ++- test/integration/production/test/index.test.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 26cc4a7748e3b..3b810e17d44a3 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -1444,7 +1444,7 @@ export default async function build( } catch (_) {} } - const root = path.parse(dir).root + const root = config.experimental.outputFileTracingRoot || dir const toTrace = [require.resolve('next/dist/server/next-server')] // ensure we trace any dependencies needed for custom @@ -1454,6 +1454,7 @@ export default async function build( require.resolve(config.experimental.incrementalCacheHandlerPath) ) } + const serverResult = await nodeFileTrace(toTrace, { base: root, processCwd: dir, diff --git a/test/integration/production/test/index.test.js b/test/integration/production/test/index.test.js index 6677ecbb1148d..ab49a0b0e88c3 100644 --- a/test/integration/production/test/index.test.js +++ b/test/integration/production/test/index.test.js @@ -103,6 +103,21 @@ describe('Production Usage', () => { file.includes('next/dist/server/send-payload/index.js') ) ).toBe(true) + const repoRoot = join(__dirname, '../../../../') + expect( + serverTrace.files.some((file) => { + const fullPath = join(__dirname, '../.next', file) + if (!fullPath.startsWith(repoRoot)) { + console.error(`Found next-server trace file outside repo root`, { + repoRoot, + fullPath, + file, + }) + return true + } + return false + }) + ).toBe(false) expect( serverTrace.files.some((file) => file.includes('next/dist/shared/lib/page-path/normalize-page-path.js')