From cee16dc3dc106d384b8064d15d9a0d6a1832a57d Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 17 Feb 2026 19:04:14 +0200 Subject: [PATCH] feat(render): display syntax errors inside render note --- apps/client/src/services/render.ts | 40 ++++++++++++++++++------------ 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/apps/client/src/services/render.ts b/apps/client/src/services/render.ts index f09d26532d..2c7371ba3b 100644 --- a/apps/client/src/services/render.ts +++ b/apps/client/src/services/render.ts @@ -12,26 +12,34 @@ async function render(note: FNote, $el: JQuery, onError?: (e: unkno $el.empty().toggle(renderNoteIds.length > 0); - for (const renderNoteId of renderNoteIds) { - const bundle = await server.post(`script/bundle/${renderNoteId}`); + try { + for (const renderNoteId of renderNoteIds) { + const bundle = await server.post(`script/bundle/${renderNoteId}`); - const $scriptContainer = $("
"); - $el.append($scriptContainer); + const $scriptContainer = $("
"); + $el.append($scriptContainer); - $scriptContainer.append(bundle.html); + $scriptContainer.append(bundle.html); - // async so that scripts cannot block trilium execution - bundleService.executeBundle(bundle, note, $scriptContainer) - .catch(onError) - .then(result => { - // Render JSX - if (bundle.html === "") { - renderIfJsx(bundle, result, $el).catch(onError); - } - }); + // async so that scripts cannot block trilium execution + bundleService.executeBundle(bundle, note, $scriptContainer) + .catch(onError) + .then(result => { + // Render JSX + if (bundle.html === "") { + renderIfJsx(bundle, result, $el).catch(onError); + } + }); + } + + return renderNoteIds.length > 0; + } catch (e) { + if (typeof e === "string" && e.startsWith("{") && e.endsWith("}")) { + onError?.(JSON.parse(e)); + } else { + onError?.(e); + } } - - return renderNoteIds.length > 0; } async function renderIfJsx(bundle: Bundle, result: unknown, $el: JQuery) {