diff --git a/packages/runtime/src/helpers/files.ts b/packages/runtime/src/helpers/files.ts index 387a9d0b13..ef43af64e4 100644 --- a/packages/runtime/src/helpers/files.ts +++ b/packages/runtime/src/helpers/files.ts @@ -337,11 +337,13 @@ const getServerFile = (root: string, includeBase = true) => { /** * Find the source file for a given page route */ -export const getSourceFileForPage = (page: string, root: string) => { - for (const extension of SOURCE_FILE_EXTENSIONS) { - const file = join(root, `${page}.${extension}`) - if (existsSync(file)) { - return file +export const getSourceFileForPage = (page: string, roots: string[]) => { + for (const root of roots) { + for (const extension of SOURCE_FILE_EXTENSIONS) { + const file = join(root, `${page}.${extension}`) + if (existsSync(file)) { + return file + } } } console.log('Could not find source file for page', page) diff --git a/packages/runtime/src/helpers/functions.ts b/packages/runtime/src/helpers/functions.ts index 88c7b07886..5015726dd7 100644 --- a/packages/runtime/src/helpers/functions.ts +++ b/packages/runtime/src/helpers/functions.ts @@ -169,11 +169,14 @@ export const setupImageFunction = async ({ export const getApiRouteConfigs = async (publish: string, baseDir: string): Promise> => { const pages = await readJSON(join(publish, 'server', 'pages-manifest.json')) const apiRoutes = Object.keys(pages).filter((page) => page.startsWith('/api/')) + // two possible places + // Ref: https://nextjs.org/docs/advanced-features/src-directory const pagesDir = join(baseDir, 'pages') + const srcPagesDir = join(baseDir, 'src', 'pages') return await Promise.all( apiRoutes.map(async (apiRoute) => { - const filePath = getSourceFileForPage(apiRoute, pagesDir) + const filePath = getSourceFileForPage(apiRoute, [pagesDir, srcPagesDir]) return { route: apiRoute, config: await extractConfigFromFile(filePath), compiled: pages[apiRoute] } }), )