@@ -21,7 +21,20 @@ const PAGES_AND_APP_FUNCTION_DIR = join(
2121 PAGES_AND_APP_FUNCTION_INTERNAL_NAME ,
2222)
2323
24- // const abc: OneOfThePaths = 'asa(/abc/)dsa'
24+ // there is some inconsistency with pathnames sometimes being '/' and sometimes being '/index',
25+ // but handler seems to expect '/'
26+ function normalizeIndex ( path : string ) : string {
27+ if ( path === '/index' ) {
28+ return '/'
29+ }
30+
31+ return path . replace (
32+ // if Index is getServerSideProps weird things happen:
33+ // /_next/data/<build-id>/.json is produced instead of /_next/data/<build-id>/index.json
34+ / ^ \/ _ n e x t \/ d a t a \/ (?< buildId > [ ^ / ] + ) \/ \. j s o n $ / ,
35+ '/_next/data/$<buildId>/index.json' ,
36+ )
37+ }
2538
2639export async function onBuildComplete (
2740 nextAdapterContext : OnBuildCompleteContext ,
@@ -46,24 +59,30 @@ export async function onBuildComplete(
4659 }
4760
4861 requiredFiles . add ( output . filePath )
49- pathnameToEntry [ output . pathname ] = relative ( nextAdapterContext . repoRoot , output . filePath )
62+ pathnameToEntry [ normalizeIndex ( output . pathname ) ] = relative (
63+ nextAdapterContext . repoRoot ,
64+ output . filePath ,
65+ )
5066 }
5167 }
5268
5369 for ( const prerender of nextAdapterContext . outputs . prerenders ) {
54- if ( prerender . pathname in pathnameToEntry ) {
55- console . log ( 'Skipping prerender, already have route:' , prerender . pathname )
56- } else if ( prerender . parentOutputId in pathnameToEntry ) {
70+ const normalizedPathname = normalizeIndex ( prerender . pathname )
71+ const normalizedParentOutputId = normalizeIndex ( prerender . parentOutputId )
72+
73+ if ( normalizedPathname in pathnameToEntry ) {
74+ console . log ( 'Skipping prerender, already have route:' , normalizedPathname )
75+ } else if ( normalizedParentOutputId in pathnameToEntry ) {
5776 // if we don't have routing for this route yet, add it
5877 console . log ( 'prerender mapping' , {
59- from : prerender . pathname ,
60- to : prerender . parentOutputId ,
78+ from : normalizedPathname ,
79+ to : normalizedParentOutputId ,
6180 } )
62- pathnameToEntry [ prerender . pathname ] = pathnameToEntry [ prerender . parentOutputId ]
81+ pathnameToEntry [ normalizedPathname ] = pathnameToEntry [ normalizedParentOutputId ]
6382 } else {
6483 console . warn ( 'Could not find parent output for prerender:' , {
65- pathname : prerender ,
66- parentOutputId : prerender . parentOutputId ,
84+ pathname : normalizedPathname ,
85+ parentOutputId : normalizedParentOutputId ,
6786 } )
6887 }
6988 }
0 commit comments