From 76f299e5de586d2e2e2bce2cdd53fd7799951860 Mon Sep 17 00:00:00 2001 From: htlee Date: Sat, 28 Feb 2026 22:26:55 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(frontend):=20api=20named=20export=20imp?= =?UTF-8?q?ort=20=EC=88=98=EC=A0=95=20(Vite=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit api.ts의 named export를 default import로 사용하여 Vite/Rollup 프로덕션 빌드 실패 수정 Co-Authored-By: Claude Opus 4.6 --- frontend/src/tabs/assets/services/assetsApi.ts | 2 +- frontend/src/tabs/incidents/services/incidentsApi.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/tabs/assets/services/assetsApi.ts b/frontend/src/tabs/assets/services/assetsApi.ts index 3ee94ed..ddc9be2 100644 --- a/frontend/src/tabs/assets/services/assetsApi.ts +++ b/frontend/src/tabs/assets/services/assetsApi.ts @@ -1,4 +1,4 @@ -import api from '@common/services/api'; +import { api } from '@common/services/api'; // ============================================================ // 타입 diff --git a/frontend/src/tabs/incidents/services/incidentsApi.ts b/frontend/src/tabs/incidents/services/incidentsApi.ts index b8c4652..9bdbb65 100644 --- a/frontend/src/tabs/incidents/services/incidentsApi.ts +++ b/frontend/src/tabs/incidents/services/incidentsApi.ts @@ -1,4 +1,4 @@ -import api from '@common/services/api'; +import { api } from '@common/services/api'; // ============================================================ // 백엔드 API 응답 타입 -- 2.45.2 From 2cd34dea9145f8b6a1ae674b720ab6d90c062943 Mon Sep 17 00:00:00 2001 From: htlee Date: Sat, 28 Feb 2026 22:28:29 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore(reviewer):=20import/export=20?= =?UTF-8?q?=EC=A0=95=ED=95=A9=EC=84=B1=20=EA=B2=80=EC=A6=9D=20=ED=95=AD?= =?UTF-8?q?=EB=AA=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vite/Rollup 빌드 시 default/named import 불일치를 사전 감지하도록 체크리스트 강화 Co-Authored-By: Claude Opus 4.6 --- .claude/agents/reviewer.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.claude/agents/reviewer.md b/.claude/agents/reviewer.md index e4763ac..104941c 100644 --- a/.claude/agents/reviewer.md +++ b/.claude/agents/reviewer.md @@ -28,6 +28,32 @@ maxTurns: 12 4. 미사용 코드 — 미사용 import, 변수, 함수 5. 팀 정책 — team-policy.md 위반 사항 6. 일관성 — 기존 코드 패턴과의 불일치 +7. import/export 정합성 — default import와 named export 불일치 검증 (아래 상세 절차 참고) + +## import/export 정합성 검증 절차 + +tsc는 `esModuleInterop` 덕분에 통과하지만 Vite/Rollup 프로덕션 빌드에서 실패하는 케이스를 잡는다. + +**검증 대상**: 변경된 파일 중 `import ... from` 구문이 포함된 모든 파일 + +**검증 방법**: +1. 변경 파일에서 `import <식별자> from '<경로>'` (중괄호 없는 default import) 패턴을 추출한다 +2. 해당 `<경로>` 모듈을 열어 `export default`가 실제로 존재하는지 확인한다 +3. 모듈이 `export const <식별자>` (named export)만 제공하면 **FAIL** — `import { <식별자> } from` 으로 수정 필요 + +**판정 기준**: +- `export default` 없는 모듈을 default import → **FAIL (Critical)** — 빌드 실패 유발 +- `export default` 있는 모듈을 default import → PASS +- `import { ... } from` (named import) → 검증 불필요 + +**실전 예시** (프로젝트에서 발생했던 사례): +```typescript +// ❌ FAIL — api.ts에는 export default 없음 +import api from '@common/services/api'; + +// ✅ PASS — named import +import { api } from '@common/services/api'; +``` ## 출력 형식 -- 2.45.2