diff --git a/pages/_slug.vue b/pages/_slug.vue index c94032379ad55092be3a125fdba8119de7b4c054..255e2f92b79a8f9b73763a6469d526bf38e75be3 100644 --- a/pages/_slug.vue +++ b/pages/_slug.vue @@ -16,10 +16,13 @@ import { headDocument as head } from '~/libs/helpers' export default { name: 'PageSlug', - async asyncData({ $content, params }) { - const document = await $content('pages', params.slug).fetch() - - return { document } + async asyncData({ $content, params, error }) { + try { + const document = await $content('pages', params.slug).fetch() + return { document } + } catch (err) { + return error({ statusCode: 404, message: err.message }) + } }, head, } diff --git a/pages/blog/_slug.vue b/pages/blog/_slug.vue index b00cf00579377b8832b64e9634e0ecce7e91c0a8..86cdfcfd1559cc6599d4187ec25e3de6fa5da099 100644 --- a/pages/blog/_slug.vue +++ b/pages/blog/_slug.vue @@ -41,19 +41,23 @@ import { headDocument as head } from '~/libs/helpers' export default { name: 'BlogSlug', - async asyncData({ $content, params }) { - const document = await $content('blog', params.slug).fetch() - - const [prev, next] = await $content('blog') - .only(['title', 'path']) - .sortBy('createdAt', 'asc') - .surround(params.slug) - .fetch() - - return { - document, - prev, - next, + async asyncData({ $content, params, error }) { + try { + const document = await $content('blog', params.slug).fetch() + + const [prev, next] = await $content('blog') + .only(['title', 'path']) + .sortBy('createdAt', 'asc') + .surround(params.slug) + .fetch() + + return { + document, + prev, + next, + } + } catch (err) { + return error({ statusCode: 404, message: err.message }) } }, head, diff --git a/pages/faq/_slug.vue b/pages/faq/_slug.vue index 597b14ab8ebc27d9933450a8738b5c365c60e7ab..27e18e8f02f5d00d79c239177c7bf91c20913d25 100644 --- a/pages/faq/_slug.vue +++ b/pages/faq/_slug.vue @@ -23,10 +23,14 @@ import { headDocument as head } from '~/libs/helpers' export default { name: 'FaqSlug', - async asyncData({ $content, params }) { - const document = await $content('faq', params.slug).fetch() + async asyncData({ $content, params, error }) { + try { + const document = await $content('faq', params.slug).fetch() - return { document } + return { document } + } catch (err) { + return error({ statusCode: 404, message: err.message }) + } }, head, } diff --git a/pages/lexique/_slug.vue b/pages/lexique/_slug.vue index d3e0971178dc1b8a032ee9e9b6b930e8ec19497b..fc42f368e965acf68b9ac3893630fadbf0a17ff0 100644 --- a/pages/lexique/_slug.vue +++ b/pages/lexique/_slug.vue @@ -34,25 +34,29 @@ import { reduceResults, headDocument as head } from '~/libs/helpers' export default { name: 'LexiqueSlug', - async asyncData({ $content, params }) { - const document = await $content('lexique', params.slug).fetch() - - const pagesWithSlot = await $content({ deep: true }) - .search(`<lexique>${params.slug}</lexique>`) - .fetch() - const pagesWithProp = await $content({ deep: true }) - .search(`<lexique title="${params.slug}">`) - .fetch() - - // Merge and deduplicate - const slugs = new Set(pagesWithSlot.map((item) => item.slug)) - const results = [ - ...pagesWithSlot, - ...pagesWithProp.filter((item) => !slugs.has(item.slug)), - ] - const pagesWithTerm = reduceResults(results) - - return { document, pagesWithTerm } + async asyncData({ $content, params, error }) { + try { + const document = await $content('lexique', params.slug).fetch() + + const pagesWithSlot = await $content({ deep: true }) + .search(`<lexique>${params.slug}</lexique>`) + .fetch() + const pagesWithProp = await $content({ deep: true }) + .search(`<lexique title="${params.slug}">`) + .fetch() + + // Merge and deduplicate + const slugs = new Set(pagesWithSlot.map((item) => item.slug)) + const results = [ + ...pagesWithSlot, + ...pagesWithProp.filter((item) => !slugs.has(item.slug)), + ] + const pagesWithTerm = reduceResults(results) + + return { document, pagesWithTerm } + } catch (err) { + return error({ statusCode: 404, message: err.message }) + } }, head, }