Fix excessive error reporting
Summary: Currently, we register global error handlers inside of ErrorReporter. To make these global error visible to the user we pipe them to `console.error`. All console methods are monkey-patched in our Logger. Logger uses ErrorReporter to report errors to LogView. It leads to duplicate errors in LogView. In this diff, we extract startGlobalErrorHandling which should help us avoid duplication. Reviewed By: passy Differential Revision: D32759909 fbshipit-source-id: 6376e193c0ba6f0b46aaccc139ecf5066a04da11
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5610f8f058
commit
0799edbca0
@@ -53,6 +53,7 @@ import {
|
|||||||
} from 'flipper-common';
|
} from 'flipper-common';
|
||||||
import {internGraphPOSTAPIRequest} from './fb-stubs/user';
|
import {internGraphPOSTAPIRequest} from './fb-stubs/user';
|
||||||
import {getRenderHostInstance} from './RenderHost';
|
import {getRenderHostInstance} from './RenderHost';
|
||||||
|
import {startGlobalErrorHandling} from './utils/globalErrorHandling';
|
||||||
|
|
||||||
class AppFrame extends React.Component<
|
class AppFrame extends React.Component<
|
||||||
{logger: Logger; persistor: Persistor},
|
{logger: Logger; persistor: Persistor},
|
||||||
@@ -176,6 +177,8 @@ function init() {
|
|||||||
const logger = initLogger(store);
|
const logger = initLogger(store);
|
||||||
setLoggerInstance(logger);
|
setLoggerInstance(logger);
|
||||||
|
|
||||||
|
startGlobalErrorHandling();
|
||||||
|
|
||||||
// rehydrate app state before exposing init
|
// rehydrate app state before exposing init
|
||||||
const persistor = persistStore(store, undefined, () => {
|
const persistor = persistStore(store, undefined, () => {
|
||||||
// Make sure process state is set before dispatchers run
|
// Make sure process state is set before dispatchers run
|
||||||
|
|||||||
19
desktop/flipper-ui-core/src/utils/globalErrorHandling.tsx
Normal file
19
desktop/flipper-ui-core/src/utils/globalErrorHandling.tsx
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const startGlobalErrorHandling = () => {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
window.addEventListener('error', (event) => {
|
||||||
|
console.error('"error" event intercepted:', event.error);
|
||||||
|
});
|
||||||
|
window.addEventListener('unhandledrejection', (event) => {
|
||||||
|
console.error('"unhandledrejection" event intercepted:', event.reason);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user