From 5a90f37e96c192443f24a8f2aeea79ce815d7705 Mon Sep 17 00:00:00 2001 From: panteliselef Date: Tue, 13 Aug 2024 11:12:41 +0300 Subject: [PATCH] fix(nextjs): Handle `__nextGetStaticStore` returning `undefined` --- .changeset/twelve-books-glow.md | 5 +++++ packages/nextjs/src/server/nextFetcher.ts | 2 +- packages/nextjs/src/server/protect.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/twelve-books-glow.md diff --git a/.changeset/twelve-books-glow.md b/.changeset/twelve-books-glow.md new file mode 100644 index 00000000000..00cf468da95 --- /dev/null +++ b/.changeset/twelve-books-glow.md @@ -0,0 +1,5 @@ +--- +"@clerk/nextjs": patch +--- + +Bug fix: Handle `nextGetStore.getStore()` returning `undefined`. Previously a TypeError would occur, when `pagePath` was accessed. diff --git a/packages/nextjs/src/server/nextFetcher.ts b/packages/nextjs/src/server/nextFetcher.ts index dc74668df65..7a73ade19cd 100644 --- a/packages/nextjs/src/server/nextFetcher.ts +++ b/packages/nextjs/src/server/nextFetcher.ts @@ -5,7 +5,7 @@ type Fetcher = typeof globalThis.fetch; */ type NextFetcher = Fetcher & { readonly __nextPatched: true; - readonly __nextGetStaticStore: () => { getStore: () => StaticGenerationAsyncStorage }; + readonly __nextGetStaticStore: () => { getStore: () => StaticGenerationAsyncStorage | undefined }; }; /** diff --git a/packages/nextjs/src/server/protect.ts b/packages/nextjs/src/server/protect.ts index 8e6a73a5a9f..0d9721aa8cd 100644 --- a/packages/nextjs/src/server/protect.ts +++ b/packages/nextjs/src/server/protect.ts @@ -134,7 +134,7 @@ const isAppRouterInternalNavigation = (req: Request) => const isPagePathAvailable = () => { const __fetch = globalThis.fetch; - return Boolean(isNextFetcher(__fetch) ? __fetch.__nextGetStaticStore().getStore().pagePath : false); + return Boolean(isNextFetcher(__fetch) ? __fetch.__nextGetStaticStore().getStore()?.pagePath : false); }; const isPagesRouterInternalNavigation = (req: Request) => !!req.headers.get(nextConstants.Headers.NextjsData);