import React, { useEffect } from 'react'; import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; import { SplashScreen } from '@capacitor/splash-screen'; import './App.css'; import Login from './pages/Login'; import Register from './pages/Register'; import NotFound from './pages/NotFound'; import NavBar from './components/NavBar'; import Index from './pages/Index'; import AuthContextWrapper from './contexts/AuthContext'; import { Toaster } from './components/ui/toaster'; import ProfileManagement from './pages/ProfileManagement'; import Transactions from './pages/Transactions'; import SecurityPrivacySettings from './pages/SecurityPrivacySettings'; import NotificationSettings from './pages/NotificationSettings'; import HelpSupport from './pages/HelpSupport'; import ForgotPassword from './pages/ForgotPassword'; import Analytics from './pages/Analytics'; import PaymentMethods from './pages/PaymentMethods'; import Settings from './pages/Settings'; import { BudgetProvider } from './contexts/BudgetContext'; import PrivateRoute from './components/auth/PrivateRoute'; import { initSyncState } from './utils/syncUtils'; // 전역 오류 핸들러 const handleError = (error: Error | unknown) => { console.error('앱 오류 발생:', error); }; // 오류 경계 컴포넌트 class ErrorBoundary extends React.Component<{ children: React.ReactNode; }, { hasError: boolean; error: Error | null; }> { constructor(props: { children: React.ReactNode; }) { super(props); this.state = { hasError: false, error: null }; } static getDerivedStateFromError(error: Error) { return { hasError: true, error }; } componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { handleError({ error, errorInfo }); } render() { if (this.state.hasError) { return
앱에서 예상치 못한 오류가 발생했습니다. 페이지를 새로고침하거나 나중에 다시 시도해주세요.
{this.state.error?.message}