跳到主要内容

上报全局错误

const reportGlobalError: (error: mixed) => void =
typeof reportError === 'function'
? // In modern browsers, reportError will dispatch an error event,
// emulating an uncaught JavaScript error.
//
// 在现代浏览器中,reportError 将会触发一个错误事件,
// 模拟未捕获的 JavaScript 错误。
reportError
: error => {
if (
typeof window === 'object' &&
typeof window.ErrorEvent === 'function'
) {
// Browser Polyfill
// 浏览器环境实现
const message =
typeof error === 'object' &&
error !== null &&
typeof error.message === 'string'
? String(error.message)
: String(error);
const event = new window.ErrorEvent('error', {
bubbles: true,
cancelable: true,
message: message,
error: error,
});
const shouldLog = window.dispatchEvent(event);
if (!shouldLog) {
return;
}
} else if (
typeof process === 'object' &&
typeof process.emit === 'function'
) {
// Node Polyfill
// Node 环境
process.emit('uncaughtException', error);
return;
}
console['error'](error);
};

export default reportGlobalError;