Skip to content

Commit 8ff0243

Browse files
committed
Assert nextConfig
1 parent 3418748 commit 8ff0243

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

packages/next/errors.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -966,5 +966,6 @@
966966
"965": "Expected setImmediate to reject invalid arguments",
967967
"966": "Expected process.nextTick to reject invalid arguments",
968968
"967": "The key \"%s\" under \"env\" in %sconfig is not allowed. https://nextjs.org/docs/messages/env-key-not-allowed",
969-
"968": "Invariant: getNextConfigEdge most only be called in edge runtime"
969+
"968": "Invariant: getNextConfigEdge most only be called in edge runtime",
970+
"969": "Invariant: nextConfig couldn't be loaded"
970971
}

packages/next/src/server/route-modules/route-module.ts

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ export abstract class RouteModule<
182182
routesManifest: DeepReadonly<DevRoutesManifest>
183183
nextFontManifest: DeepReadonly<NextFontManifest>
184184
prerenderManifest: DeepReadonly<PrerenderManifest>
185-
serverFilesManifest: RequiredServerFilesManifest
185+
serverFilesManifest: RequiredServerFilesManifest | undefined
186186
reactLoadableManifest: DeepReadonly<ReactLoadableManifest>
187187
subresourceIntegrityManifest: any
188188
clientReferenceManifest: any
@@ -227,9 +227,7 @@ export abstract class RouteModule<
227227
process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE
228228
),
229229
},
230-
serverFilesManifest:
231-
(self.__SERVER_FILES_MANIFEST as any as RequiredServerFilesManifest) ||
232-
{},
230+
serverFilesManifest: self.__SERVER_FILES_MANIFEST,
233231
clientReferenceManifest: self.__RSC_MANIFEST?.[srcPage],
234232
serverActionsManifest: maybeJSONParse(self.__RSC_SERVER_MANIFEST),
235233
subresourceIntegrityManifest: maybeJSONParse(
@@ -337,13 +335,12 @@ export abstract class RouteModule<
337335
shouldCache: !this.isDev,
338336
}),
339337
this.isDev
340-
? // in dev, routerServerGlobal is read instead for the nextConfig
341-
({} as any)
342-
: loadManifestFromRelativePath<RequiredServerFilesManifest>({
338+
? undefined
339+
: (loadManifestFromRelativePath<RequiredServerFilesManifest>({
343340
projectDir,
344341
distDir: this.distDir,
345342
manifest: `${SERVER_FILES_MANIFEST}.json`,
346-
}),
343+
}) as RequiredServerFilesManifest),
347344
this.isDev
348345
? 'development'
349346
: loadManifestFromRelativePath<any>({
@@ -513,14 +510,19 @@ export abstract class RouteModule<
513510
)
514511
}
515512

516-
let serverFilesManifest =
517-
(self.__SERVER_FILES_MANIFEST as any as RequiredServerFilesManifest) || {}
513+
let serverFilesManifest = self.__SERVER_FILES_MANIFEST as any as
514+
| RequiredServerFilesManifest
515+
| undefined
518516
const relativeProjectDir =
519517
getRequestMeta(req, 'relativeProjectDir') || this.relativeProjectDir
520518
const routerServerContext =
521519
routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]
522520
const nextConfig =
523-
routerServerContext?.nextConfig || serverFilesManifest.config
521+
routerServerContext?.nextConfig || serverFilesManifest?.config
522+
523+
if (!nextConfig) {
524+
throw new Error("Invariant: nextConfig couldn't be loaded")
525+
}
524526

525527
return nextConfig
526528
}
@@ -555,7 +557,9 @@ export abstract class RouteModule<
555557
buildManifest: DeepReadonly<BuildManifest>
556558
fallbackBuildManifest: DeepReadonly<BuildManifest>
557559
nextFontManifest: DeepReadonly<NextFontManifest>
558-
serverFilesManifest: DeepReadonly<RequiredServerFilesManifest>
560+
serverFilesManifest:
561+
| DeepReadonly<RequiredServerFilesManifest>
562+
| undefined
559563
reactLoadableManifest: DeepReadonly<ReactLoadableManifest>
560564
routesManifest: DeepReadonly<DevRoutesManifest>
561565
prerenderManifest: DeepReadonly<PrerenderManifest>
@@ -874,7 +878,11 @@ export abstract class RouteModule<
874878
const routerServerContext =
875879
routerServerGlobal[RouterServerContextSymbol]?.[relativeProjectDir]
876880
const nextConfig =
877-
routerServerContext?.nextConfig || serverFilesManifest.config
881+
routerServerContext?.nextConfig || serverFilesManifest?.config
882+
883+
if (!nextConfig) {
884+
throw new Error("Invariant: nextConfig couldn't be loaded")
885+
}
878886

879887
let resolvedPathname = normalizedSrcPage
880888
if (isDynamicRoute(resolvedPathname) && params) {
@@ -915,7 +923,6 @@ export abstract class RouteModule<
915923
isOnDemandRevalidate,
916924
revalidateOnlyGenerated,
917925
...manifests,
918-
serverActionsManifest: manifests.serverActionsManifest,
919926
clientReferenceManifest: manifests.clientReferenceManifest,
920927
nextConfig,
921928
routerServerContext,

0 commit comments

Comments
 (0)