Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit 3d463cf

Browse files
committed
Fix useDeno rendering error in vercel
1 parent 2c7cf41 commit 3d463cf

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

framework/react/hooks.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,30 +39,31 @@ export function useDeno<T = any>(callback: () => (T | Promise<T>), options?: { k
3939
return useMemo(() => {
4040
const global = window as any
4141
const href = router.toString()
42-
const pagedataUrl = `pagedata://${href}`
43-
const dataUrl = `${pagedataUrl}#${id}`
42+
const dataUrl = `pagedata://${href}`
4443

4544
if (inDeno) {
46-
const renderingData = global[`rendering-${pagedataUrl}`]
45+
const renderingData = global[`rendering-${dataUrl}`]
4746

4847
if (renderingData && id in renderingData) {
4948
return renderingData[id] // 2+ pass
5049
}
5150

5251
const value = callback()
5352
const expires = typeof revalidate === 'number' && !isNaN(revalidate) ? Date.now() + revalidate * 1000 : 0
54-
events.emit(`useDeno-${pagedataUrl}`, { id, value, expires })
53+
events.emit(`useDeno-${dataUrl}`, { id, value, expires })
5554

5655
// thow an `AsyncUseDenoError` to break current rendering
5756
if (value instanceof Promise) {
5857
throw new AsyncUseDenoError()
5958
}
6059

61-
renderingData[id] = value
60+
if (renderingData) {
61+
renderingData[id] = value
62+
}
6263
return value
6364
}
6465

65-
const data = global[dataUrl]
66+
const data = global[`${dataUrl}#${id}`]
6667
return data?.value
6768
}, [id, router])
6869
}

framework/react/renderer.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export async function render(
2222
nestedPageComponents: { specifier: string, Component?: any, props?: Record<string, any> }[],
2323
styles: Record<string, { css?: string, href?: string }>
2424
): Promise<FrameworkRenderResult> {
25-
const global = globalThis as any
25+
const global = window as any
2626
const ret: FrameworkRenderResult = {
2727
head: [],
2828
body: '',
@@ -35,12 +35,13 @@ export async function render(
3535
scripts: new Map(),
3636
}
3737
const dataUrl = 'pagedata://' + url.toString()
38+
const dataKey = 'rendering-' + dataUrl
3839
const asyncCalls: Array<[string, number, Promise<any>]> = []
3940
const data: Record<string, any> = {}
4041
const renderingData: Record<string, any> = {}
4142
const pageProps = createPageProps(nestedPageComponents)
42-
const defer = () => {
43-
delete global['rendering-' + dataUrl]
43+
const defer = async () => {
44+
Reflect.deleteProperty(global, dataKey)
4445
events.removeAllListeners('useDeno-' + dataUrl)
4546
}
4647

@@ -58,7 +59,7 @@ export async function render(
5859
})
5960

6061
// share rendering data
61-
global['rendering-' + dataUrl] = renderingData
62+
global[dataKey] = renderingData
6263

6364
// listen `useDeno-*` events to get hooks callback result.
6465
events.on('useDeno-' + dataUrl, ({ id, value, expires }: { id: string, value: any, expires: number }) => {

0 commit comments

Comments
 (0)