From 0240306058e9e6aab3327ef1fe4d93a4d5eb1779 Mon Sep 17 00:00:00 2001 From: Insub Kim Date: Sun, 16 Nov 2025 21:55:38 +0900 Subject: [PATCH] Fix type errors related to Cloudflare Workers and SvelteKit compatibility --- src/lib/counter-do.ts | 8 ++++---- src/routes/api/counter/+server.ts | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lib/counter-do.ts b/src/lib/counter-do.ts index bd41c74..b2bf0ab 100644 --- a/src/lib/counter-do.ts +++ b/src/lib/counter-do.ts @@ -50,7 +50,7 @@ export class CounterDurableObject { return new Response('Expected Upgrade: websocket', { status: 426 }); } - // @ts-expect-error - WebSocketPair는 Cloudflare Workers 런타임에서만 사용 가능 + // @ts-ignore - WebSocketPair는 Cloudflare Workers 런타임에서만 사용 가능 const webSocketPair = new WebSocketPair(); const [client, server] = Object.values(webSocketPair) as [WebSocket, WebSocket]; @@ -61,7 +61,7 @@ export class CounterDurableObject { }; // WebSocket Hibernation API 사용 - // @ts-expect-error - Cloudflare Workers types 불일치 + // @ts-ignore - Cloudflare Workers types 불일치 this.ctx.acceptWebSocket(server); this.sessions.set(server, session); @@ -70,7 +70,7 @@ export class CounterDurableObject { return new Response(null, { status: 101, - // @ts-expect-error - webSocket 속성은 Cloudflare Workers에서 지원됨 + // @ts-ignore - webSocket 속성은 Cloudflare Workers에서 지원됨 webSocket: client }); } @@ -168,7 +168,7 @@ export class CounterDurableObject { }); // 모든 연결된 WebSocket에 메시지 전송 - // @ts-expect-error - Cloudflare Workers types 불일치 + // @ts-ignore - Cloudflare Workers types 불일치 connectedWebSockets.forEach((ws: WebSocket) => { try { ws.send(message); diff --git a/src/routes/api/counter/+server.ts b/src/routes/api/counter/+server.ts index 0d8382b..5abcf21 100644 --- a/src/routes/api/counter/+server.ts +++ b/src/routes/api/counter/+server.ts @@ -1,5 +1,7 @@ import type { RequestHandler } from './$types'; +// SvelteKit의 Request/Response 타입과 Cloudflare Workers 타입 간의 충돌로 인한 타입 에러 무시 +// @ts-expect-error - Cloudflare Workers types와 Web Standard API types 간의 호환성 문제 export const GET: RequestHandler = async ({ request, platform }) => { // WebSocket 업그레이드 요청인지 확인 const upgradeHeader = request.headers.get('Upgrade'); @@ -7,17 +9,19 @@ export const GET: RequestHandler = async ({ request, platform }) => { return new Response('Expected Upgrade: websocket', { status: 426 }); } - // Durable Object ID 생성 (모든 클라이언트가 같은 인스턴스에 연결) - const id = platform?.env.COUNTER.idFromName('global-counter'); - - if (!id) { - return new Response('Durable Object not configured', { status: 500 }); + // platform 존재 확인 + if (!platform) { + return new Response('Platform not available', { status: 500 }); } + // Durable Object ID 생성 (모든 클라이언트가 같은 인스턴스에 연결) + const id = platform.env.COUNTER.idFromName('global-counter'); + // Durable Object stub 가져오기 const stub = platform.env.COUNTER.get(id); // Durable Object에 요청 전달 + // @ts-expect-error - Cloudflare Workers Request 타입과 표준 Request 타입 간의 호환성 문제 return stub.fetch(request); };