feat: emit 404.html to dist

pull/740/head
Divyansh Singh 3 years ago
parent 721fa364ea
commit 9b603e1c10

@ -109,7 +109,7 @@ export function createRouter(
}
}
} catch (err: any) {
if (!err.message.match(/fetch/)) {
if (!err.message.match(/fetch/) && !href.match(/404\.html/)) {
console.error(err)
}

@ -49,7 +49,8 @@ export async function build(
// as JS object literal.
const hashMapString = JSON.stringify(JSON.stringify(pageToHashMap))
for (const page of siteConfig.pages) {
const pages = ['404.md', ...siteConfig.pages]
for (const page of pages) {
await renderPage(
siteConfig,
page,

@ -5,7 +5,7 @@ import { pathToFileURL } from 'url'
import escape from 'escape-html'
import { normalizePath, transformWithEsbuild } from 'vite'
import { RollupOutput, OutputChunk, OutputAsset } from 'rollup'
import { HeadConfig, createTitle } from '../shared'
import { HeadConfig, createTitle, PageData } from '../shared'
import { slash } from '../utils/slash'
import { SiteConfig, resolveSiteDataByRoute } from '../config'
@ -52,13 +52,31 @@ export async function renderPage(
const pageHash = pageToHashMap[pageName.toLowerCase()]
const pageClientJsFileName = `assets/${pageName}.${pageHash}.lean.js`
let pageData: PageData
let hasCustom404 = true
try {
// resolve page data so we can render head tags
const { __pageData } = await import(
pathToFileURL(path.join(config.tempDir, pageServerJsFileName)).toString()
)
const pageData = JSON.parse(__pageData)
pageData = JSON.parse(__pageData)
} catch (e) {
if (page === '404.md') {
hasCustom404 = false
pageData = {
relativePath: '',
title: '404',
description: 'Not Found',
headers: [],
frontmatter: {},
lastUpdated: 0
}
} else throw e
}
let preloadLinks = config.mpa
let preloadLinks =
config.mpa || (!hasCustom404 && page === '404.md')
? appChunk
? [appChunk.fileName]
: []

Loading…
Cancel
Save