fix: add self-contained global-error.tsx (useContext null during prerender)
This commit is contained in:
1 parent
c2b296d605
commit
945ce598d2
1 file changed
+58
@@ -0,0 +1,58 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
// global-error.tsx — Next.js special page, rendered OUTSIDE the root layout.
|
||||||
|
// It must be fully self-contained: no ThemeProvider, no Sonner, no context hooks.
|
||||||
|
// Replaces the entire <html> + <body> tree when a global error occurs.
|
||||||
|
|
||||||
|
export default function GlobalError({
|
||||||
|
error,
|
||||||
|
reset,
|
||||||
|
}: {
|
||||||
|
error: Error & { digest?: string };
|
||||||
|
reset: () => void;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<html lang="de">
|
||||||
|
<body
|
||||||
|
style={{
|
||||||
|
margin: 0,
|
||||||
|
minHeight: "100vh",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
fontFamily: "system-ui, -apple-system, sans-serif",
|
||||||
|
background: "#0a0a0a",
|
||||||
|
color: "#fafafa",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div style={{ textAlign: "center", padding: "2rem", maxWidth: 480 }}>
|
||||||
|
<h1 style={{ fontSize: "1.5rem", marginBottom: "0.5rem" }}>
|
||||||
|
Etwas ist schiefgelaufen
|
||||||
|
</h1>
|
||||||
|
<p style={{ color: "#a1a1a1", fontSize: "0.875rem", marginBottom: "1.5rem" }}>
|
||||||
|
Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut.
|
||||||
|
</p>
|
||||||
|
{error.digest && (
|
||||||
|
<p style={{ color: "#525252", fontSize: "0.75rem", marginBottom: "1.5rem" }}>
|
||||||
|
Fehler-ID: {error.digest}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
<button
|
||||||
|
onClick={() => reset()}
|
||||||
|
style={{
|
||||||
|
padding: "0.5rem 1rem",
|
||||||
|
borderRadius: "0.375rem",
|
||||||
|
border: "1px solid #404040",
|
||||||
|
background: "transparent",
|
||||||
|
color: "#fafafa",
|
||||||
|
cursor: "pointer",
|
||||||
|
fontSize: "0.875rem",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Erneut versuchen
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in new issue
Block a user