UNPKG

@sdc-monitor/demo

Version:

<div align="center"> <a href="#" target="_blank"> <img src="https://i.loli.net/2021/07/28/EvPwd4NjVH3tBfO.jpg" alt="mito-logo" height="90"> </a> <p>A Lightweight SDK For Monitor Web</p>

40 lines (37 loc) 1.52 kB
import { BrowserBreadcrumbTypes, BrowserEventTypes, ErrorTypes } from '@sdc-monitor/shared' import { extractErrorStack, getLocationHref, getTimestamp, isError, on, Severity, unknownToString, _global } from '@sdc-monitor/utils' import { BasePluginType, HttpTransformedType, ReportDataType } from '@sdc-monitor/types' import { BrowserClient } from '../browserClient' import { addBreadcrumbInBrowser } from '../utils' const name = BrowserEventTypes.UNHANDLEDREJECTION const unhandlerejectionPlugin: BasePluginType<BrowserEventTypes, BrowserClient> = { name, monitor(notify) { on(_global, name, function (ev: PromiseRejectionEvent) { // ev.preventDefault() 阻止默认行为后,控制台就不会再报红色错误 notify(name, ev) }) }, transform(collectedData: PromiseRejectionEvent) { let data: ReportDataType = { type: ErrorTypes.PROMISE, message: unknownToString(collectedData.reason), url: getLocationHref(), name: collectedData.type, time: getTimestamp(), level: Severity.Low } if (isError(collectedData.reason)) { data = { ...data, ...extractErrorStack(collectedData.reason, Severity.Low) } } return data }, consumer(transformedData: HttpTransformedType) { const breadcrumbStack = addBreadcrumbInBrowser.call(this, transformedData, BrowserBreadcrumbTypes.UNHANDLEDREJECTION, Severity.Error) this.transport.send(transformedData, breadcrumbStack) } } export default unhandlerejectionPlugin