Skip to content

Commit e3eae1b

Browse files
committed
fix: handle shared-cache-controls rename
1 parent 5f86878 commit e3eae1b

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

src/run/handlers/cache.cts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,29 @@ export class NetlifyCacheHandler implements CacheHandlerForMultipleVersions {
200200
try {
201201
const prerenderManifest = await this.getPrerenderManifest(this.options.serverDistDir)
202202
if (typeof cacheControl !== 'undefined') {
203-
// instead of `revalidate` property, we might get `cacheControls` ( https://github.com/vercel/next.js/pull/76207 )
204-
// then we need to keep track of revalidate values via SharedCacheControls
205-
const { SharedCacheControls } = await import(
206-
// @ts-expect-error supporting multiple next version, this module is not resolvable with currently used dev dependency
207-
// eslint-disable-next-line import/no-unresolved, n/no-missing-import
208-
'next/dist/server/lib/incremental-cache/shared-cache-controls.js'
209-
)
210-
const sharedCacheControls = new SharedCacheControls(prerenderManifest)
211-
sharedCacheControls.set(key, cacheControl)
203+
// let
204+
try {
205+
// instead of `revalidate` property, we might get `cacheControls` ( https://github.com/vercel/next.js/pull/76207 )
206+
// then we need to keep track of revalidate values via SharedCacheControls
207+
208+
// https://github.com/vercel/next.js/pull/80588 renamed shared-cache-controls module
209+
const { SharedCacheControls } = await import(
210+
// @ts-expect-error supporting multiple next version, this module is not resolvable with currently used dev dependency
211+
// eslint-disable-next-line import/no-unresolved, n/no-missing-import
212+
'next/dist/server/lib/incremental-cache/shared-cache-controls.external.js'
213+
)
214+
const sharedCacheControls = new SharedCacheControls(prerenderManifest)
215+
sharedCacheControls.set(key, cacheControl)
216+
} catch {
217+
// attempting to use shared-cache-controls before https://github.com/vercel/next.js/pull/80588 was merged
218+
const { SharedCacheControls } = await import(
219+
// @ts-expect-error supporting multiple next version, this module is not resolvable with currently used dev dependency
220+
// eslint-disable-next-line import/no-unresolved, n/no-missing-import
221+
'next/dist/server/lib/incremental-cache/shared-cache-controls.js'
222+
)
223+
const sharedCacheControls = new SharedCacheControls(prerenderManifest)
224+
sharedCacheControls.set(key, cacheControl)
225+
}
212226
} else if (typeof revalidate === 'number' || revalidate === false) {
213227
// if we don't get cacheControls, but we still get revalidate, it should mean we are before
214228
// https://github.com/vercel/next.js/pull/76207

0 commit comments

Comments
 (0)