"use client"; /** * 根级错误边界 * * Next.js 16 约定:必须为 Client Component;reset prop 在 v16 中被重命名为 * `unstable_retry`(参见 `node_modules/next/dist/docs/01-app/03-api-reference/03-file-conventions/error.md`)。 * * 行为:把 `error` 打到 console(保留 digest 便于服务端聚合),并提供"重试" * 与"返回首页"两个动作。 */ import { useEffect } from "react"; import Link from "next/link"; import { ExceptionHandler } from "@/core/errors"; import { ROUTES } from "@/router/routes"; import { Logger } from "@/utils/logger"; const log = new Logger("AppError"); interface ErrorProps { error: Error & { digest?: string }; unstable_retry: () => void; } export default function GlobalError({ error, unstable_retry }: ErrorProps) { useEffect(() => { // 把错误送到 console;后续接 Sentry/Datadog 时改这里。 log.error("[app/error.tsx]", error); }, [error]); const errorMessage = ExceptionHandler.message(error, "Unexpected error"); return (

Something went wrong

{errorMessage} {error.digest ? ` (digest: ${error.digest})` : null}

Back to start
); }