Skip to content

Commit

Permalink
prevent caching prefetch error
Browse files Browse the repository at this point in the history
  • Loading branch information
ijjk committed Apr 27, 2021
1 parent 2525246 commit 1a6cd90
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions packages/next/client/route-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ function withFuture<T>(
export interface RouteLoader {
whenEntrypoint(route: string): Promise<RouteEntrypoint>
onEntrypoint(route: string, execute: () => unknown): void
loadRoute(route: string): Promise<RouteLoaderEntry>
loadRoute(route: string, prefetch?: boolean): Promise<RouteLoaderEntry>
prefetch(route: string): Promise<void>
}

Expand Down Expand Up @@ -305,7 +305,7 @@ function createRouteLoader(assetPrefix: string): RouteLoader {
if (old && 'resolve' in old) old.resolve(input)
})
},
loadRoute(route: string) {
loadRoute(route: string, prefetch?: boolean) {
return withFuture<RouteLoaderEntry>(route, routes, () => {
return resolvePromiseWithTimeout(
getFilesForRoute(assetPrefix, route)
Expand Down Expand Up @@ -334,6 +334,10 @@ function createRouteLoader(assetPrefix: string): RouteLoader {
return 'error' in entrypoint ? entrypoint : res
})
.catch((err) => {
if (prefetch) {
// we don't want to cache errors during prefetch
throw err
}
return { error: err }
})
})
Expand All @@ -355,7 +359,7 @@ function createRouteLoader(assetPrefix: string): RouteLoader {
)
)
.then(() => {
requestIdleCallback(() => this.loadRoute(route))
requestIdleCallback(() => this.loadRoute(route, true).catch(() => {}))
})
.catch(
// swallow prefetch errors
Expand Down

0 comments on commit 1a6cd90

Please sign in to comment.