2025-12-22 17:37:41 +08:00
|
|
|
import { StrictMode } from 'react';
|
|
|
|
|
import { createRoot } from 'react-dom/client';
|
|
|
|
|
import App from './App.tsx';
|
|
|
|
|
import './index.css';
|
|
|
|
|
import { AuthProvider } from './contexts/AuthContext';
|
2026-01-24 13:53:50 +08:00
|
|
|
import { LanguageProvider } from './contexts/LanguageContext';
|
2025-12-22 17:37:41 +08:00
|
|
|
|
2026-01-27 23:44:18 +08:00
|
|
|
// 错误处理:捕获未处理的错误
|
|
|
|
|
window.addEventListener('error', (event) => {
|
|
|
|
|
console.error('Global error:', event.error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
window.addEventListener('unhandledrejection', (event) => {
|
|
|
|
|
console.error('Unhandled promise rejection:', event.reason);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const rootElement = document.getElementById('root');
|
|
|
|
|
if (!rootElement) {
|
|
|
|
|
throw new Error('Root element not found');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
createRoot(rootElement).render(
|
|
|
|
|
<StrictMode>
|
|
|
|
|
<AuthProvider>
|
|
|
|
|
<LanguageProvider>
|
|
|
|
|
<App />
|
|
|
|
|
</LanguageProvider>
|
|
|
|
|
</AuthProvider>
|
|
|
|
|
</StrictMode>
|
|
|
|
|
);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('Failed to render app:', error);
|
|
|
|
|
rootElement.innerHTML = `
|
|
|
|
|
<div style="padding: 20px; font-family: sans-serif;">
|
|
|
|
|
<h1>应用启动失败</h1>
|
|
|
|
|
<p>错误信息: ${error instanceof Error ? error.message : String(error)}</p>
|
|
|
|
|
<p>请检查浏览器控制台获取更多信息。</p>
|
|
|
|
|
</div>
|
|
|
|
|
`;
|
|
|
|
|
}
|