From f82614194049f04470f2f464b3f6b31510ec5521 Mon Sep 17 00:00:00 2001 From: liyunze <50455574+liyunze-coding@users.noreply.github.com> Date: Mon, 31 Aug 2026 19:04:14 +0800 Subject: [PATCH] fix server error --- Dockerfile | 5 +++++ src/lib/api.ts | 6 +++--- src/routes/+page.svelte | 12 ++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4f36664..6a12bda 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,9 @@ RUN npm ci COPY . . RUN npm run build +# Keep only production dependencies so they can be copied into the runtime image. +RUN npm prune --omit=dev + # ---- Runtime stage ---- FROM node:24-alpine AS runtime @@ -25,6 +28,8 @@ ENV NODE_ENV=production \ DATABASE_PATH=data/dsec.db COPY --from=build /app/build ./build +COPY --from=build /app/package.json ./package.json +COPY --from=build /app/node_modules ./node_modules RUN mkdir -p data && chown -R node:node /app USER node diff --git a/src/lib/api.ts b/src/lib/api.ts index d66803d..7ee39d0 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -5,9 +5,9 @@ async function call(name: string, args: Record = {}): Promise body: JSON.stringify({ fn: name, args }), }); - const data = await res.json(); - if (!data.ok) { - throw new Error(data.error ?? "Request failed"); + const data = await res.json().catch(() => null); + if (!res.ok || !data?.ok) { + throw new Error(data?.error ?? `Request failed (${res.status})`); } return data.result; } diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index cace8bd..774c0dd 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -5,10 +5,16 @@ let units: UnitDoc[] = $state([]); let loading = $state(true); + let error = $state(""); onMount(async () => { - units = (await query("units:getAll")) as UnitDoc[]; - loading = false; + try { + units = (await query("units:getAll")) as UnitDoc[]; + } catch (err: any) { + error = err.message ?? "Failed to load units"; + } finally { + loading = false; + } }); @@ -38,6 +44,8 @@

Units

{#if loading}

Loading

+ {:else if error} +

{error}

{:else}
{#each units as unit}