Files
claudia/src/main.tsx

59 lines
1.7 KiB
TypeScript

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import { ErrorBoundary } from "./components/ErrorBoundary";
import { AnalyticsErrorBoundary } from "./components/AnalyticsErrorBoundary";
import { analytics, resourceMonitor } from "./lib/analytics";
import { PostHogProvider } from "posthog-js/react";
import { loader } from "@monaco-editor/react";
import "./lib/i18n"; // 初始化国际化
import "./assets/shimmer.css";
import "./styles.css";
// Configure Monaco loader to use local assets (copied to /public/monaco/vs)
try {
loader.config({ paths: { vs: "/monaco/vs" } });
} catch (e) {
console.error("[Monaco] loader.config failed:", e);
}
// Initialize analytics before rendering (will no-op if no consent or no key)
analytics.initialize();
// Start resource monitoring (check every 2 minutes)
resourceMonitor.startMonitoring(120000);
const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
const posthogKey = (import.meta as any).env.VITE_PUBLIC_POSTHOG_KEY as string | undefined;
if (posthogKey) {
root.render(
<React.StrictMode>
<PostHogProvider
apiKey={posthogKey}
options={{
api_host: (import.meta as any).env.VITE_PUBLIC_POSTHOG_HOST,
capture_exceptions: true,
debug: import.meta.env.MODE === "development",
}}
>
<ErrorBoundary>
<AnalyticsErrorBoundary>
<App />
</AnalyticsErrorBoundary>
</ErrorBoundary>
</PostHogProvider>
</React.StrictMode>
);
} else {
root.render(
<React.StrictMode>
<ErrorBoundary>
<AnalyticsErrorBoundary>
<App />
</AnalyticsErrorBoundary>
</ErrorBoundary>
</React.StrictMode>
);
}