diff --git a/packages/next/src/build/adapter/build-complete.ts b/packages/next/src/build/adapter/build-complete.ts index 505eedaaac1b..96f808d77782 100644 --- a/packages/next/src/build/adapter/build-complete.ts +++ b/packages/next/src/build/adapter/build-complete.ts @@ -2166,6 +2166,14 @@ async function getSharedNodeAssets({ ) currentDependencies.push(modulePath) + if (type === 'pages' && bundler === Bundler.Turbopack) { + currentDependencies.push( + require.resolve( + 'next/dist/compiled/next-server/pages-turbo.runtime.prod.js' + ) + ) + } + const contextDir = path.join( path.dirname(modulePath), 'vendored', diff --git a/test/production/adapter-config/adapter-config.test.ts b/test/production/adapter-config/adapter-config.test.ts index 3928c45c0b5b..03fce4f52e50 100644 --- a/test/production/adapter-config/adapter-config.test.ts +++ b/test/production/adapter-config/adapter-config.test.ts @@ -4,7 +4,7 @@ import type { AdapterOutput, NextAdapter } from 'next' import { version as nextVersion } from 'next/package.json' describe('adapter-config', () => { - const { next } = nextTestSetup({ + const { next, isTurbopack } = nextTestSetup({ files: __dirname, }) @@ -391,6 +391,23 @@ describe('adapter-config', () => { // pages should have vendored context files traced expect(pagesVendoredContexts.length).toBeGreaterThan(0) + if (isTurbopack) { + const pagesApiOutput = outputs.pagesApi.find( + (output) => + output.pathname === '/docs/api/node-pages' && + output.runtime === 'nodejs' + ) + + expect(pagesApiOutput).toBeDefined() + expect( + Object.keys(pagesApiOutput!.assets).some((asset) => + /[\\/]next[\\/]dist[\\/]compiled[\\/]next-server[\\/]pages-turbo\.runtime\.prod\.js$/.test( + asset + ) + ) + ).toBe(true) + } + for (const route of edgeOutputs) { try { expect(route.id).toBeString()