diff --git a/src/client/app/router.ts b/src/client/app/router.ts index 9dd424bd6fe3..394185595ed8 100644 --- a/src/client/app/router.ts +++ b/src/client/app/router.ts @@ -29,7 +29,7 @@ const getDefaultRoute = (): Route => ({ }) interface PageModule { - __pageData: string + __pageData: PageData default: Component } @@ -77,8 +77,8 @@ export function createRouter( route.path = inBrowser ? pendingPath : withBase(pendingPath) route.component = markRaw(comp) route.data = import.meta.env.PROD - ? markRaw(JSON.parse(__pageData)) - : (readonly(JSON.parse(__pageData)) as PageData) + ? markRaw(__pageData) + : (readonly(__pageData) as PageData) if (inBrowser) { nextTick(() => { diff --git a/src/node/build/render.ts b/src/node/build/render.ts index 7be6ee2584eb..c4330e3e63aa 100644 --- a/src/node/build/render.ts +++ b/src/node/build/render.ts @@ -60,7 +60,7 @@ export async function renderPage( const { __pageData } = await import( pathToFileURL(path.join(config.tempDir, pageServerJsFileName)).toString() ) - pageData = JSON.parse(__pageData) + pageData = __pageData } catch (e) { if (page === '404.md') { hasCustom404 = false diff --git a/src/node/markdownToVue.ts b/src/node/markdownToVue.ts index 740c3713fa24..8959cce25c69 100644 --- a/src/node/markdownToVue.ts +++ b/src/node/markdownToVue.ts @@ -169,9 +169,9 @@ const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/ const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)as(\s*)default/ function genPageDataCode(tags: string[], data: PageData) { - const code = `\nexport const __pageData = ${JSON.stringify( + const code = `\nexport const __pageData = JSON.parse(${JSON.stringify( JSON.stringify(data) - )}` + )})` const existingScriptIndex = tags.findIndex((tag) => { return (