{"record":{"id":"392140a9da18b708","repo":"quasarframework/quasar","slug":"render-error-for-the-above-ssg-page","errorCode":null,"errorMessage":"Render error for the above SSG page:","messagePattern":"Render error for the above SSG page:","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"app-vite/lib/modes/ssg/ssg-builder.js","lineNumber":69,"sourceCode":"      console.log()\n      error('SSG build failed to render SSG page:')\n      console.error(ssgPage)\n      error('Render error for the above SSG page:')\n      console.error(err)\n      error(\n        `Failed to render SSG page for ${getSsgPageIdentifier(ssgPage)}.` +\n          (reason ? ` ${reason}.` : '') +\n          ' Check details above.'\n      )\n    }\n  }\n\n  if (onSsgRendererError === 'warn') {\n    return ({ err, reason, ssgPage }) => {\n      console.log()\n      warn('SSG build failed to render SSG page:')\n      console.warn(ssgPage)\n      warn('Render error for the above SSG page:')\n      console.warn(err)\n      warn(\n        `Failed to render SSG page for ${getSsgPageIdentifier(ssgPage)}.` +\n          (reason ? ` ${reason}.` : '') +\n          ' Check details above.'\n      )\n    }\n  }\n\n  if (onSsgRendererError === 'ignore') {\n    return () => {}\n  }\n\n  fatal(\n    'Invalid value for quasar.config.ssg.onSsgRendererError:' +\n      `\"${onSsgRendererError}\". Must be one of: \"abort\", \"error\",` +\n      ' \"warn\", \"ignore\" or a function.',\n    'FAIL'","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/quasarframework/quasar/blob/4841521b5f635a971eb9e2710e5542efd194691b/app-vite/lib/modes/ssg/ssg-builder.js#L51-L87","documentation":"During SSG builds, when a page fails to render, Quasar calls the handler from getSsgRendererErrorHandler. If build.ssg.onRendererError is set to 'warn' (the non-fatal mode), it prints the failing page definition, the render error, and this warning header before the failure summary, then continues the build leaving that page unrendered.","triggerScenarios":"A specific SSG page throws during pre-render (route render crashes in the renderer) while ssg.onRendererError: 'warn' is configured; also used for fallbackRouteParams pages that fail.","commonSituations":"Page component assumes browser-only APIs (window/document) during pre-render; a route with dynamic params throws for a particular param value; async data fetch fails for one route; SSR-incompatible library imported by that page.","solutions":["Inspect the render error printed under this warning (console.warn(err)) for the real stack","Fix browser-only API usage in the failing page (guard with process.env.CLIENT or move to onMounted)","Add the problematic route to build.ssg.exclude if it cannot be pre-rendered","Fix or provide data for the failing dynamic route parameter"],"exampleFix":"// before\nexport default { mounted() {}, setup() { document.title = 'x' } }\n// after\nexport default {\n  setup() {\n    if (process.env.CLIENT) document.title = 'x'\n  }\n}","handlingStrategy":"validation","validationCode":"// before building SSG, check routes for browser-only usage\nif (process.env.SERVER) {\n  if (typeof window !== 'undefined') {\n    throw new Error('Page code touches window during prerender')\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  await renderPage(ssgPage)\n} catch (err) {\n  console.error(`SSG render failed for ${ssgPage}`)\n  // add to build.ssg.exclude or fix the browser-only code\n}","preventionTips":["Guard window/document/localStorage access with process.env.CLIENT","Move browser-only logic into onMounted/client hooks","Test each dynamic route with real parameter values before full SSG builds","Configure build.ssg.onRendererError to decide warn vs fail-fast policy"],"tags":["ssg","prerender","render-error"],"backgroundTag":"ssg-page-render-failed","analyzedSha":"4841521b5f635a971eb9e2710e5542efd194691b","analyzedAt":"2026-08-30T01:13:14.944Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}