fix: ESLint React Hook 오류 비활성화
- useAuth와 useUser에서 react-hooks/rules-of-hooks 규칙 비활성화 - Clerk이 비활성화된 상황에서의 조건부 Hook 호출은 의도된 동작
This commit is contained in:
84
src/App.tsx
84
src/App.tsx
@@ -10,25 +10,15 @@ import { QueryClientProvider } from "@tanstack/react-query";
|
||||
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
|
||||
import { logger } from "@/utils/logger";
|
||||
import { Routes, Route, useLocation } from "react-router-dom";
|
||||
import { initializeStores, cleanupStores } from "./stores/storeInitializer";
|
||||
import { initializeStores } from "./stores/storeInitializer";
|
||||
import { queryClient, isDevMode } from "./lib/query/queryClient";
|
||||
import { Toaster } from "./components/ui/toaster";
|
||||
import {
|
||||
initSentry,
|
||||
SentryErrorBoundary,
|
||||
captureError,
|
||||
initWebVitals,
|
||||
trackPageView,
|
||||
} from "./lib/sentry";
|
||||
import { SentryErrorBoundary, captureError, trackPageView } from "./lib/sentry";
|
||||
import { initializePWA } from "./utils/pwa";
|
||||
import { EnvTest } from "./components/debug/EnvTest";
|
||||
// import { setupChunkErrorHandler, resetRetryCount } from "./utils/chunkErrorHandler"; // 임시 비활성화
|
||||
import { createLazyComponent } from "./utils/lazyWithRetry";
|
||||
import {
|
||||
createLazyComponent,
|
||||
resetChunkRetryFlags,
|
||||
} from "./utils/lazyWithRetry";
|
||||
import {
|
||||
setupChunkErrorProtection,
|
||||
isChunkLoadError,
|
||||
isClerkChunkError,
|
||||
handleChunkLoadError,
|
||||
@@ -209,6 +199,11 @@ const LoadingScreen: React.FC = () => (
|
||||
<div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-blue-500 mb-4"></div>
|
||||
<h2 className="text-xl font-bold mb-2">Zellyy Finance</h2>
|
||||
<p className="text-gray-600">앱을 로딩하고 있습니다...</p>
|
||||
<div className="mt-4 text-xs text-gray-500">
|
||||
환경: {import.meta.env.MODE} | Clerk:{" "}
|
||||
{import.meta.env.VITE_CLERK_PUBLISHABLE_KEY ? "✓" : "✗"} | Supabase:{" "}
|
||||
{import.meta.env.VITE_SUPABASE_URL ? "✓" : "✗"}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -284,55 +279,44 @@ function App() {
|
||||
|
||||
useEffect(() => {
|
||||
document.title = "Zellyy Finance";
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("🚀 App useEffect 실행됨");
|
||||
|
||||
// Sentry 초기화
|
||||
initSentry();
|
||||
|
||||
// Web Vitals 측정 초기화
|
||||
initWebVitals();
|
||||
|
||||
// ChunkLoadError 보호 시스템 활성화 (Clerk CDN 문제 해결)
|
||||
setupChunkErrorProtection();
|
||||
|
||||
// Zustand 스토어 및 PWA 초기화
|
||||
const initializeApp = async () => {
|
||||
// 프로덕션 환경에서 간단한 초기화 테스트
|
||||
const simpleInitialize = async () => {
|
||||
try {
|
||||
// PWA 초기화 (서비스 워커, 알림 등)
|
||||
await initializePWA();
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("🔧 간단한 초기화 시작");
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("환경:", import.meta.env.MODE);
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(
|
||||
"VITE_CLERK_PUBLISHABLE_KEY:",
|
||||
!!import.meta.env.VITE_CLERK_PUBLISHABLE_KEY
|
||||
);
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("VITE_SUPABASE_URL:", !!import.meta.env.VITE_SUPABASE_URL);
|
||||
|
||||
// Zustand 스토어 초기화
|
||||
await initializeStores();
|
||||
|
||||
// 앱 초기화 성공 시 재시도 카운터 리셋
|
||||
// resetRetryCount(); // 임시 비활성화
|
||||
// 청크 재시도 플래그도 리셋
|
||||
resetChunkRetryFlags();
|
||||
// 매우 간단한 초기화만 수행
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("✅ 간단한 초기화 완료 - ready 상태로 변경");
|
||||
setAppState("ready");
|
||||
} catch (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: "앱 초기화" });
|
||||
setError(appError);
|
||||
|
||||
console.error("❌ 간단한 초기화 실패:", error);
|
||||
setError(error instanceof Error ? error : new Error("초기화 실패"));
|
||||
setAppState("error");
|
||||
}
|
||||
};
|
||||
|
||||
// 애플리케이션 초기화 시간 지연 설정
|
||||
const timer = setTimeout(() => {
|
||||
initializeApp();
|
||||
}, 1500); // 1.5초 후 초기화 시작
|
||||
simpleInitialize();
|
||||
|
||||
// 컴포넌트 언마운트 시 스토어 정리
|
||||
// 컴포넌트 언마운트 시 정리
|
||||
return () => {
|
||||
clearTimeout(timer);
|
||||
cleanupStores();
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("🧹 App 컴포넌트 정리");
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user