Files
promote/extension/src/main.tsx
2025-03-07 18:04:27 +08:00

55 lines
1.6 KiB
TypeScript

import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App.tsx';
import './index.css';
import ErrorBoundary from './ErrorBoundary';
// Error boundary for the entire application
const renderApp = () => {
try {
const rootElement = document.getElementById('root');
if (!rootElement) {
console.error('Root element not found');
return;
}
createRoot(rootElement).render(
<StrictMode>
<ErrorBoundary>
<App />
</ErrorBoundary>
</StrictMode>
);
} catch (error) {
console.error('Error rendering application:', error);
// Render a fallback UI in case of error
const rootElement = document.getElementById('root');
if (rootElement) {
rootElement.innerHTML = `
<div style="padding: 20px; color: #721c24; background-color: #f8d7da; border: 1px solid #f5c6cb; border-radius: 5px;">
<h2>Application Error</h2>
<p>Sorry, something went wrong while loading the application.</p>
<p>Error details: ${error instanceof Error ? error.message : String(error)}</p>
<button onclick="window.location.reload()" style="background: #dc3545; color: white; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer;">
Reload Page
</button>
</div>
`;
}
}
};
// Disable Vite's error overlay to prevent WebSocket connection attempts
window.addEventListener('error', (event) => {
event.preventDefault();
console.error('Caught error:', event.error);
return true;
});
// Disable Vite's HMR client
if (import.meta.hot) {
import.meta.hot.decline();
}
renderApp();