Skip to content

Commit a54b761

Browse files
authored
further improve @cloudflare/vite-plugin bug catcher (closes #2930) (#2932)
1 parent d8fffa4 commit a54b761

3 files changed

Lines changed: 31 additions & 4 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
export { assertVirtualFileExports }
2+
3+
import { assert } from './utils.js'
4+
5+
function assertVirtualFileExports<ModuleExports>(
6+
moduleExports: ModuleExports,
7+
test: (moduleExports: ModuleExports) => boolean,
8+
moduleId?: string,
9+
) {
10+
if (!moduleExports || !test(moduleExports)) {
11+
/* https://github.com/vikejs/vike/issues/2903#issuecomment-3642285811
12+
throw getProjectError('@cloudflare/vite-plugin error https://github.com/vikejs/vike/issues/2903#issuecomment-3642285811')
13+
/*/
14+
assert(false, { moduleExports, moduleExportsKeys: getKeys(moduleExports), moduleId })
15+
//*/
16+
}
17+
}
18+
19+
function getKeys(obj: any) {
20+
if (obj === undefined) return null
21+
return [...Object.getOwnPropertyNames(obj), ...Object.getOwnPropertySymbols(obj), ...Object.keys(obj)]
22+
}

packages/vike/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ import type {
1212
PageConfigGlobalRuntimeSerialized,
1313
PageConfigRuntimeSerialized,
1414
} from '../page-configs/serialize/PageConfigSerialized.js'
15+
import { assertVirtualFileExports } from '../assertVirtualFileExports.js'
1516

1617
function parseVirtualFileExportsGlobalEntry(virtualFileExportsGlobalEntry: unknown): {
1718
pageFilesAll: PageFile[]
1819
pageConfigs: PageConfigRuntime[]
1920
pageConfigGlobal: PageConfigGlobalRuntime
2021
} {
22+
assertVirtualFileExports(virtualFileExportsGlobalEntry, (moduleExports: any) => 'pageFilesLazy' in moduleExports)
2123
assert(hasProp(virtualFileExportsGlobalEntry, 'pageFilesLazy', 'object'))
2224
assert(hasProp(virtualFileExportsGlobalEntry, 'pageFilesEager', 'object'))
2325
assert(hasProp(virtualFileExportsGlobalEntry, 'pageFilesExportNamesLazy', 'object'))

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
export { loadAndParseVirtualFilePageEntry }
22

3-
import { assert, objectAssign } from '../utils.js'
3+
import { objectAssign } from '../utils.js'
44
import type {
55
ConfigValues,
66
PageConfigRuntime,
77
PageConfigRuntimeLoaded,
88
VirtualFileExportsPageEntry,
99
} from '../../types/PageConfig.js'
1010
import { parseConfigValuesSerialized } from './serialize/parsePageConfigsSerialized.js'
11+
import { assertVirtualFileExports } from '../assertVirtualFileExports.js'
1112

1213
async function loadAndParseVirtualFilePageEntry(
1314
pageConfig: PageConfigRuntime,
@@ -22,9 +23,11 @@ async function loadAndParseVirtualFilePageEntry(
2223
}
2324
const { moduleId, moduleExportsPromise } = pageConfig.loadVirtualFilePageEntry()
2425
const moduleExports = await moduleExportsPromise
25-
// `configValuesLoaded` is sometimes `undefined` https://github.com/vikejs/vike/discussions/2092
26-
// `configValuesLoaded.configValuesSerialized` is sometimes `undefined` https://github.com/vikejs/vike/issues/2903
27-
if (!moduleExports?.configValuesSerialized) assert(false, { moduleExports, moduleId })
26+
/* `moduleExports` is sometimes `undefined` https://github.com/vikejs/vike/discussions/2092
27+
assert(moduleExports)
28+
//*/
29+
// Catch @cloudflare/vite-plugin bug
30+
assertVirtualFileExports(moduleExports, () => 'configValuesSerialized' in moduleExports, moduleId)
2831
const virtualFileExportsPageEntry = moduleExports
2932
const configValues = parseVirtualFileExportsPageEntry(virtualFileExportsPageEntry)
3033
Object.assign(pageConfig.configValues, configValues)

0 commit comments

Comments
 (0)