import { isRouteErrorResponse, Links, Meta, Outlet, Scripts, ScrollRestoration, useNavigate, useRouteError, } from "react-router"; import type { Route } from "./+types/root"; import { siteTitle } from "~/utils"; import "./app.css"; export const links: Route.LinksFunction = () => [ { rel: "icon", href: "/icon.png" }, { rel: "stylesheet", href: "https://cdn-font.hyperos.mi.com/font/css?family=MiSans:100,200,300,400,450,500,600,650,700,900:Chinese_Simplify,Latin&display=swap", }, ]; export function Layout({ children }: { children: React.ReactNode }) { const error = useRouteError(); return ( {isRouteErrorResponse(error) && error.status === 404 && {siteTitle(error.status)}} {children} ); } export default function App() { return ; } export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { const navigate = useNavigate(); let message = "啊哦"; let details = "发生了未知的异常"; let stack: string | undefined; if (isRouteErrorResponse(error)) { if (error.status === 404) { message = "404"; details = "页面不存在"; } else { details = error.statusText || details; } } else if (import.meta.env.DEV && error && error instanceof Error) { details = error.message; stack = error.stack; } return (

{message}

{details}

{stack && (
          {stack}
        
)}
); }