我正在使用哨兵跟踪崩溃报告,我已经设置了我的项目上的React,但我配置它的盖茨比,我已经添加了插件在正确的方式在gatsby.js文件,但在创建问题的任何一个组件,它是不是反映在哨兵问题,我无法找到这个问题的原因。请帮助我
我将error-boundary.js文件放在组件文件夹中,下面是该文件的代码
import React from 'react';
import { ErrorBoundary } from '@sentry/react';
import { Link } from 'gatsby';
const FallBack = ({ error, resetError }) => (
<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;
然后将其导入gatsby-browser.js文件
import React from 'react'
import ErrorBoundaryContainer from './src/components/error-boundary'
export const wrapPageElement = ({ element }) => (
<ErrorBoundaryContainer>
{element}
</ErrorBoundaryContainer>
)
然后我在我的一个组件中创建一个用例来抛出测试错误,
const [toggle, toggleError] = React.useState(false);
if (toggle) {
console.error('console error');
throw new Error('I crashed!');
}
<button type="button" onClick={() => toggleError(true)}>
Break the world
</button>
1条答案
按热度按时间brccelvz1#
这里有几件事要评论:
wrapPageElement
是gatsby-browser.js
和gatsby-ssr.js
之间的共享API,因此如果使用它,则必须在两个文件中放置相同的代码段@sentry/gatsby
作为依赖项,如docs suggestsuseEffect
,否则,它将永远不会抛出错误。这是一个React错误,而不是Gatsby错误。带有
toggle
依赖项([toggle]
)的useEffect
钩子将在每次toggle值改变时被触发。在你的代码片段中,因为initially被设置为false
(React.useState(false)
),所以你的错误不会被抛出。这就像说“好的,当我的deps值(本例中为toggle
)改变时,触发我里面的东西”。