mirror of
https://hub.gitmirror.com/https://github.com/ExamAware/ExamAware-docs
synced 2025-04-29 13:46:41 +00:00
fix: 修复了脑抽导致的问题
修复了脑抽导致的问题
This commit is contained in:
parent
7ea3cddf6e
commit
035c609634
@ -1,94 +0,0 @@
|
|||||||
// .vuepress/enhanceApp.js
|
|
||||||
import * as Sentry from '@sentry/browser';
|
|
||||||
import { Vue as VueIntegration } from '@sentry/integrations';
|
|
||||||
import { Integrations } from '@sentry/tracing';
|
|
||||||
|
|
||||||
export default ({ Vue, router }) => {
|
|
||||||
// 仅在生产环境启用 Sentry
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
// 初始化 Sentry
|
|
||||||
Sentry.init({
|
|
||||||
dsn: 'https://f8ab1b11ab45f86bd6c4237ba16cb5fe@o4508946125619200.ingest.de.sentry.io/4509058673606736',
|
|
||||||
integrations: [
|
|
||||||
// 自动捕获 Vue 组件错误
|
|
||||||
new VueIntegration({
|
|
||||||
Vue,
|
|
||||||
attachProps: true, // 记录组件 props
|
|
||||||
logErrors: false // 关闭控制台错误重复输出
|
|
||||||
}),
|
|
||||||
// 启用性能监控
|
|
||||||
new Integrations.BrowserTracing({
|
|
||||||
routingInstrumentation: Sentry.vueRouterInstrumentation(router),
|
|
||||||
tracingOrigins: ['localhost', /^\//]
|
|
||||||
})
|
|
||||||
],
|
|
||||||
environment: 'production',
|
|
||||||
release: 'vuepress-docs@1.0.0', // 需与构建版本一致
|
|
||||||
tracesSampleRate: 0.3, // 30%的性能数据采样
|
|
||||||
autoSessionTracking: true, // 自动会话跟踪
|
|
||||||
beforeSend(event) {
|
|
||||||
// 过滤敏感信息(示例)
|
|
||||||
if (event.request?.url) {
|
|
||||||
event.request.url = event.request.url.replace(/password=[^&]*/, 'password=[REDACTED]');
|
|
||||||
}
|
|
||||||
return event;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ================= 手动用户行为记录 =================
|
|
||||||
|
|
||||||
// 1. 路由导航追踪
|
|
||||||
router.beforeEach((to, from, next) => {
|
|
||||||
// 记录面包屑导航
|
|
||||||
Sentry.addBreadcrumb({
|
|
||||||
category: 'navigation',
|
|
||||||
message: `Route change: ${from.path} → ${to.path}`,
|
|
||||||
level: 'info'
|
|
||||||
});
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 2. 页面访问事件记录
|
|
||||||
router.afterEach((to) => {
|
|
||||||
Sentry.captureEvent({
|
|
||||||
message: 'Page View',
|
|
||||||
level: 'info',
|
|
||||||
tags: {
|
|
||||||
route: to.path,
|
|
||||||
referrer: document.referrer || 'direct'
|
|
||||||
},
|
|
||||||
extra: {
|
|
||||||
fullPath: to.fullPath,
|
|
||||||
userAgent: navigator.userAgent
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// 3. 全局错误处理器(补充)
|
|
||||||
window.addEventListener('unhandledrejection', (event) => {
|
|
||||||
Sentry.captureException(event.reason, {
|
|
||||||
contexts: {
|
|
||||||
promise: {
|
|
||||||
rejection: event.reason?.stack || String(event.reason)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.log('[Sentry] 开发模式已禁用监控');
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================= 扩展方法示例 =================
|
|
||||||
// 可在 Vue 原型上添加方法供组件调用
|
|
||||||
Vue.prototype.$trackEvent = (eventName, payload) => {
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
Sentry.captureEvent({
|
|
||||||
message: eventName,
|
|
||||||
level: 'info',
|
|
||||||
contexts: {
|
|
||||||
custom: payload
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
Loading…
x
Reference in New Issue
Block a user