- main.tsx: on vite:preloadError (stale index.html referencing removed hashed chunks after a redeploy) reload the page immediately. - New ErrorBoundary around the whole router: render errors show a Persian fallback with «تلاش مجدد» instead of wiping the DOM. - nginx: index.html served with Cache-Control no-cache,no-store, must-revalidate (verified live); /assets/* stays public, immutable.
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
import { StrictMode } from "react";
|
|
import { createRoot } from "react-dom/client";
|
|
import { BrowserRouter } from "react-router-dom";
|
|
import { QueryClientProvider } from "@tanstack/react-query";
|
|
import { Toaster } from "sonner";
|
|
import App from "./App";
|
|
import "./styles/globals.css";
|
|
import { queryClient } from "./lib/queryClient";
|
|
|
|
// بعد از استقرار نسخهی جدید، مرورگری که index.html قدیمی را باز کرده برای
|
|
// بارگذاری chunkهای حذفشده 404 میگیرد و صفحه خالی میماند. این شنونده،
|
|
// همان لحظه صفحه را دوباره بارگذاری میکند تا نسخهی تازه (با نام فایلهای
|
|
// درست) گرفته شود.
|
|
window.addEventListener("vite:preloadError", () => {
|
|
window.location.reload();
|
|
});
|
|
|
|
createRoot(document.getElementById("root")!).render(
|
|
<StrictMode>
|
|
<QueryClientProvider client={queryClient}>
|
|
<BrowserRouter>
|
|
<App />
|
|
</BrowserRouter>
|
|
<Toaster position="top-center" richColors closeButton />
|
|
</QueryClientProvider>
|
|
</StrictMode>,
|
|
);
|