u-spa
Version:
SPA应用监控工具,监听url变化、首屏加载指标、js-error、image-error 并上报
53 lines (52 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var uploadData_1 = require("./uploadData");
var utils_1 = require("./utils");
var initRequestUrlValue = '';
var initHostUrlValue = '';
var initCookieNameValue = '';
var monitorErrorInitFn = function (obj) {
var requestUrl = obj.requestUrl, hostUrl = obj.hostUrl, cookieNameKey = obj.cookieNameKey;
initRequestUrlValue = requestUrl;
initHostUrlValue = hostUrl;
initCookieNameValue = cookieNameKey;
// const oldErrorLog = console.error;
var userName = (0, utils_1.getUserName)(initCookieNameValue);
window.onunhandledrejection = function (e) {
throw new Error(e.reason.stack);
};
// 设置成 true 是捕获阶段,可以获取图片加载失败的情况, 冒泡阶段获取不到
window.addEventListener('error', function (e) {
var message = e.message, filename = e.filename, lineno = e.lineno, colno = e.colno, error = e.error;
var imageSrc = (e.target && e.target.src) || '';
var reqObj;
if (imageSrc) {
reqObj = {
type: 'image-error',
userName: userName,
value: imageSrc,
userAgent: navigator.userAgent,
visitTime: (0, utils_1.getCurrentDate)(),
};
}
else {
var obj_1 = {
filename: filename,
lineno: lineno,
colno: colno,
message: message
};
reqObj = {
type: 'js-error',
userName: userName,
value: JSON.stringify(obj_1),
userAgent: navigator.userAgent,
// visitTime: getCurrentDate(),
};
}
if (initHostUrlValue === location.host) {
(0, uploadData_1.postRequest)(initRequestUrlValue, reqObj);
}
}, true);
};
exports.default = monitorErrorInitFn;