Skip to content

Commit 1d110cc

Browse files
authored
fix: Safari WebKit TDZ bug in loadAndParseVirtualFilePageEntry (fix #3121) (#3122)
1 parent 5e18f9a commit 1d110cc

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

packages/vike/src/shared-server-client/page-configs/loadAndParseVirtualFilePageEntry.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,16 @@ async function loadAndParseVirtualFilePageEntry(
2929
// Catch @cloudflare/vite-plugin bug
3030
assertVirtualFileExports(moduleExports, () => 'configValuesSerialized' in moduleExports, moduleId)
3131
const virtualFileExportsPageEntry = moduleExports
32-
const configValues = parseVirtualFileExportsPageEntry(virtualFileExportsPageEntry)
32+
let configValues: ConfigValues
33+
try {
34+
configValues = parseVirtualFileExportsPageEntry(virtualFileExportsPageEntry)
35+
} catch (e) {
36+
if (!(e instanceof ReferenceError)) throw e
37+
// Safari WebKit bug: dynamic import() may resolve before the module body executes,
38+
// https://github.com/vikejs/vike/issues/3121
39+
await new Promise<void>((resolve) => setTimeout(resolve))
40+
configValues = parseVirtualFileExportsPageEntry(virtualFileExportsPageEntry)
41+
}
3342
Object.assign(pageConfig.configValues, configValues)
3443
objectAssign(pageConfig, { isPageEntryLoaded: true as const })
3544
return pageConfig

0 commit comments

Comments
 (0)