fix: Clerk 패키지 설치 및 Vite 빌드 설정 수정

- @clerk/clerk-react 패키지 설치 추가
- Vite external 설정에서 Clerk 번들링 허용으로 변경
- ChunkLoadError 복구 시스템 Playwright 테스트 추가
- Clerk CDN 실패 시나리오 검증 및 Mock 인증 폴백 시스템 확인

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hansoo
2025-07-14 14:12:40 +09:00
parent 483e458465
commit 3934ab933f
9 changed files with 209 additions and 104 deletions

View File

@@ -115,7 +115,10 @@ class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
}
componentDidCatch(error: Error, errorInfo: ErrorInfo): void {
logger.error("애플리케이션 오류:", error, errorInfo);
logger.error("애플리케이션 오류:", {
error: error.message,
componentStack: errorInfo.componentStack,
});
// ChunkLoadError 처리
if (isChunkLoadError(error)) {
@@ -277,8 +280,6 @@ function App() {
"loading"
);
const [error, setError] = useState<Error | null>(null);
// Appwrite 설정 상태는 향후 사용 예정
// const [appwriteEnabled, setAppwriteEnabled] = useState(true);
useEffect(() => {
document.title = "Zellyy Finance";
@@ -308,7 +309,12 @@ function App() {
setAppState("ready");
} catch (error) {
logger.error("앱 초기화 실패", error);
logger.error(
"앱 초기화 실패",
error instanceof Error
? { message: error.message, stack: error.stack }
: String(error)
);
const appError =
error instanceof Error ? error : new Error("앱 초기화 실패");
captureError(appError, { context: "앱 초기화" });
@@ -340,7 +346,12 @@ function App() {
await initializeStores();
setAppState("ready");
} catch (error) {
logger.error("재시도 실패", error);
logger.error(
"재시도 실패",
error instanceof Error
? { message: error.message, stack: error.stack }
: String(error)
);
setError(error instanceof Error ? error : new Error("재시도 실패"));
setAppState("error");
}