From 62fa85de5776112fcc01c7e972ae3f4ea57e26bc Mon Sep 17 00:00:00 2001 From: maudetes Date: Fri, 27 Feb 2026 20:30:49 +0100 Subject: [PATCH 1/3] chore: prevent component failures in pages Add a safeguard to try to prevent `Couldn't resolve component "default" at "/posts/:id()"` errors. I don't think we should encounter unregistered blocsTypes though outside of temporary backend updates. If we do encounter an unknown bloc, we log a message to sentry for debugging --- components/Pages/PageShow.vue | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/components/Pages/PageShow.vue b/components/Pages/PageShow.vue index 7f54102e3..acf0a2096 100644 --- a/components/Pages/PageShow.vue +++ b/components/Pages/PageShow.vue @@ -67,7 +67,7 @@ import type { ComponentProps } from 'vue-component-type-helpers' +import * as Sentry from '@sentry/nuxt' import { BrandedButton } from '@datagouv/components-next' import { RiAddLine, RiArrowDownLine, RiArrowUpLine, RiDeleteBinLine, RiEdit2Line } from '@remixicon/vue' import { toast } from 'vue-sonner' @@ -150,6 +152,15 @@ import { isMeAdmin } from '~/utils/auth' const blocsTypes = useBlocsTypes() +watchEffect(() => { + // TODO: Temporary log any unknown/unregistered blocs for debugging. It should not happen (except following a backend update). + for (const bloc of props.page.blocs) { + if (!blocsTypes[bloc.class]) { + Sentry.captureMessage(`Unknown bloc type: "${bloc.class}" in page "${props.page.id}"`, 'warning') + } + } +}) + const props = withDefaults(defineProps<{ page: Page edit?: boolean From 29d1b22e906ea2ca9759adb1d56a0e16620ee992 Mon Sep 17 00:00:00 2001 From: maudetes Date: Fri, 27 Feb 2026 20:38:56 +0100 Subject: [PATCH 2/3] Fix typecheck --- components/Pages/PageShow.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Pages/PageShow.vue b/components/Pages/PageShow.vue index acf0a2096..3ffefefd6 100644 --- a/components/Pages/PageShow.vue +++ b/components/Pages/PageShow.vue @@ -67,7 +67,7 @@ Date: Fri, 27 Feb 2026 20:43:27 +0100 Subject: [PATCH 3/3] move watcheffect at the end --- components/Pages/PageShow.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/components/Pages/PageShow.vue b/components/Pages/PageShow.vue index 3ffefefd6..a87269a89 100644 --- a/components/Pages/PageShow.vue +++ b/components/Pages/PageShow.vue @@ -152,15 +152,6 @@ import { isMeAdmin } from '~/utils/auth' const blocsTypes = useBlocsTypes() -watchEffect(() => { - // TODO: Temporary log any unknown/unregistered blocs for debugging. It should not happen (except following a backend update). - for (const bloc of props.page.blocs) { - if (!blocsTypes[bloc.class]) { - Sentry.captureMessage(`Unknown bloc type: "${bloc.class}" in page "${props.page.id}"`, 'warning') - } - } -}) - const props = withDefaults(defineProps<{ page: Page edit?: boolean @@ -172,6 +163,15 @@ const props = withDefaults(defineProps<{ mainColor: 'primary', }) +watchEffect(() => { + // TODO: Temporary log any unknown/unregistered blocs for debugging. It should not happen (except following a backend update). + for (const bloc of props.page.blocs) { + if (!blocsTypes[bloc.class]) { + Sentry.captureMessage(`Unknown bloc type: "${bloc.class}" in page "${props.page.id}"`, 'warning') + } + } +}) + const emit = defineEmits<{ 'update:page': [Page] 'save': [Page]