diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index 7fce1b8b4b..283b86a9fc 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -229,14 +229,14 @@ export const setupImageFunction = async ({ } const traceRequiredServerFiles = async (publish: string): Promise => { - const { - files, - relativeAppDir, - config: { - experimental: { outputFileTracingRoot }, - }, - } = await getRequiredServerFiles(publish) - const appDirRoot = join(outputFileTracingRoot, relativeAppDir) + const requiredServerFiles = await getRequiredServerFiles(publish) + + let appDirRoot = requiredServerFiles.appDir ?? join(publish, '..') + if (requiredServerFiles.relativeAppDir && requiredServerFiles.config?.experimental.outputFileTracingRoot) { + appDirRoot = join(requiredServerFiles.config.experimental.outputFileTracingRoot, requiredServerFiles.relativeAppDir) + } + + const files = requiredServerFiles.files ?? [] const absoluteFiles = files.map((file) => join(appDirRoot, file)) absoluteFiles.push(join(publish, 'required-server-files.json')) diff --git a/test/index.spec.ts b/test/index.spec.ts index 87cc555267..565e8428d4 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -737,6 +737,28 @@ describe('onBuild()', () => { expect(netlifyConfig.functions['_api_*'].node_bundler).toEqual('nft') }) + + // eslint-disable-next-line jest/expect-expect + it('works when `relativeAppDir` is undefined', async () => { + await moveNextDist() + + const initialConfig = await getRequiredServerFiles(netlifyConfig.build.publish) + delete initialConfig.relativeAppDir + await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) + + await nextRuntime.onBuild(defaultArgs) + }) + + // eslint-disable-next-line jest/expect-expect + it('works when `outputFileTracingRoot` is undefined', async () => { + await moveNextDist() + + const initialConfig = await getRequiredServerFiles(netlifyConfig.build.publish) + delete initialConfig.config.experimental.outputFileTracingRoot + await updateRequiredServerFiles(netlifyConfig.build.publish, initialConfig) + + await nextRuntime.onBuild(defaultArgs) + }) }) describe('onPostBuild', () => {