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:
Andrey Goncharov
2021-12-02 10:06:51 -08:00
committed by Facebook GitHub Bot
parent 5610f8f058
commit 0799edbca0
2 changed files with 22 additions and 0 deletions

View File

@@ -53,6 +53,7 @@ import {
} from 'flipper-common';
import {internGraphPOSTAPIRequest} from './fb-stubs/user';
import {getRenderHostInstance} from './RenderHost';
import {startGlobalErrorHandling} from './utils/globalErrorHandling';
class AppFrame extends React.Component<
{logger: Logger; persistor: Persistor},
@@ -176,6 +177,8 @@ function init() {
const logger = initLogger(store);
setLoggerInstance(logger);
startGlobalErrorHandling();
// rehydrate app state before exposing init
const persistor = persistStore(store, undefined, () => {
// Make sure process state is set before dispatchers run

View 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);
});
}
};