From 2a1a6f20fbcd760338bd64b7e71e289ac3f44ea8 Mon Sep 17 00:00:00 2001 From: Haewon Kam Date: Fri, 10 Apr 2026 15:31:56 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20URL=20=ED=8C=8C=EC=8B=B1=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EB=B0=A9=EC=96=B4=20=EC=B2=98=EB=A6=AC=20(transfor?= =?UTF-8?q?mReport,=20ClinicProfilePage)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit metadata.url 또는 row.url이 null/빈 문자열일 때 new URL() 호출이 throw하던 문제를 try/catch로 방어. Co-Authored-By: Claude Sonnet 4.6 --- src/lib/transformReport.ts | 4 ++-- src/pages/ClinicProfilePage.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/transformReport.ts b/src/lib/transformReport.ts index 60139aa..2664445 100644 --- a/src/lib/transformReport.ts +++ b/src/lib/transformReport.ts @@ -573,7 +573,7 @@ export function transformApiReport( location: clinic.address || '', nearestStation: '', phone: clinic.phone || '', - domain: new URL(metadata.url).hostname, + domain: (() => { try { return new URL(metadata.url || '').hostname; } catch { return metadata.url || ''; } })(), // Registry-sourced fields source: metadata.source ?? 'scrape', registryData: metadata.registryData ?? undefined, @@ -653,7 +653,7 @@ export function transformApiReport( ], websiteAudit: { - primaryDomain: new URL(metadata.url).hostname, + primaryDomain: (() => { try { return new URL(metadata.url || '').hostname; } catch { return metadata.url || ''; } })(), additionalDomains: (r.channelAnalysis?.website?.additionalDomains || []).map(d => ({ domain: (d as { domain?: string }).domain || '', purpose: (d as { purpose?: string }).purpose || '', diff --git a/src/pages/ClinicProfilePage.tsx b/src/pages/ClinicProfilePage.tsx index ee1fb88..adbaea5 100644 --- a/src/pages/ClinicProfilePage.tsx +++ b/src/pages/ClinicProfilePage.tsx @@ -137,7 +137,7 @@ export default function ClinicProfilePage() { CLINIC.nameEn = (row.clinic_name || '').includes('의원') ? '' : row.clinic_name || ''; // Update website - const domain = new URL(row.url).hostname; + const domain = (() => { try { return new URL(row.url || '').hostname; } catch { return row.url || ''; } })(); CLINIC.websites = [{ label: '공식 홈페이지', url: domain, primary: true }]; // Update social from socialHandles