React Router 会捕获路由模块中的错误,并将它们发送到错误边界,以防止在发生错误时出现空白页面。然而,ErrorBoundary 不足以用于记录和报告错误。要访问这些捕获到的错误,请使用服务器入口模块的 handleError 导出。
如果在你的应用目录中没有看到 entry.server.tsx
,那么你正在使用默认入口。使用此 CLI 命令来揭示它。
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);
}
};