基于React创建的Sentry项目在Gatsby配置后无法捕获错误如何解决
Sentry Gatsby项目错误无上报排查方案
- 确认
gatsby-config.js中Sentry插件的核心配置完整性,DSN、环境标识、版本号为必填参数,Sentry默认过滤本地开发环境的上报,需要在插件配置中显式添加enabled: true开启本地测试上报,也可以直接执行gatsby build && gatsby serve启动生产环境服务后再测试。 - Gatsby开发模式(
gatsby develop)自带React开发错误遮罩层,会优先于自定义的ErrorBoundary捕获错误,此时错误不会传递到Sentry的监听链路,这是绝大多数配置正确但无上报的核心原因。 - 检查依赖版本匹配度,确保
@sentry/react和你使用的Sentry Gatsby插件(gatsby-plugin-sentry/@sentry/gatsby)的主版本号一致,版本跨度过大可能导致上报链路断裂。 - 可以在ErrorBoundary中添加手动上报逻辑兜底,修改
error-boundary.js代码如下:
import React from 'react'; import { ErrorBoundary, captureException } from '@sentry/react'; import { Link } from 'gatsby'; const FallBack = ({ error, resetError }) => { // 手动触发错误上报 captureException(error); return ( <div role="alert"> <p>Something went wrong:</p> <pre>{error.message}</pre> <Link to="/" onClick={resetError}> <a>Try again</a> </Link> </div> ); }; const ErrorBoundaryContainer = ({ children }) => { return <ErrorBoundary fallback={FallBack}>{children}</ErrorBoundary>; }; export default ErrorBoundaryContainer;
- 触发错误后打开浏览器网络面板,检查发往Sentry服务端的请求是否被浏览器插件、防火墙、站点CSP策略拦截。
内容的提问来源于stack exchange,提问作者Ashutosh rai
相关产品推荐
相关产品推荐

