diff --git a/packages/runtime/src/helpers/files.ts b/packages/runtime/src/helpers/files.ts index cfbb25f353..4e747df403 100644 --- a/packages/runtime/src/helpers/files.ts +++ b/packages/runtime/src/helpers/files.ts @@ -353,6 +353,11 @@ export const getSourceFileForPage = (page: string, roots: string[], pageExtensio if (existsSync(file)) { return file } + + const fileAtFolderIndex = join(root, page, `index.${extension}`) + if (existsSync(fileAtFolderIndex)) { + return fileAtFolderIndex + } } } console.log('Could not find source file for page', page) diff --git a/test/fixtures/page-extensions/index/pages/api/index/index.js b/test/fixtures/page-extensions/index/pages/api/index/index.js new file mode 100644 index 0000000000..172f1ae6a4 --- /dev/null +++ b/test/fixtures/page-extensions/index/pages/api/index/index.js @@ -0,0 +1 @@ +// noop diff --git a/test/helpers/files.spec.ts b/test/helpers/files.spec.ts index 02672a3958..019dd38b64 100644 --- a/test/helpers/files.spec.ts +++ b/test/helpers/files.spec.ts @@ -237,4 +237,13 @@ describe('getSourceFileForPage', () => { expect(filePath.replace(TEST_DIR, '')).toBe('/fixtures/page-extensions/custom/pages/api/custom.api.js') }) + + it('handles getting file when index of folder', () => { + const pagesDir = resolve(__dirname, '../fixtures/page-extensions/index/pages') + const apiRoute = '/api/index' + + const filePath = getSourceFileForPage(apiRoute, [pagesDir]) + + expect(filePath.replace(TEST_DIR, '')).toBe('/fixtures/page-extensions/index/pages/api/index/index.js') + }) })