React Router 会捕获路由模块中的错误,并将它们发送到 错误边界,以防止在发生错误时出现空白页面。然而,ErrorBoundary 对于日志记录和错误报告是不够的。要访问这些被捕获的错误,请使用服务器入口模块的 handleError 导出。
如果你在应用程序目录中没有看到 entry.server.tsx
,则表示你正在使用默认入口。使用此命令行命令来显示它:
react-router reveal
当 React Router 在服务器上捕获到应用程序中的错误时,将调用此函数。
import { type HandleErrorFunction } from "react-router";
export const handleError: HandleErrorFunction = (
error,
{ request }
) => {
// React Router may abort some interrupted requests, don't log those
if (!request.signal.aborted) {
myReportError(error);
// make sure to still log the error so you can see it
console.error(error);
}
};