UNPKG

@zjsix/vue-monitor

Version:

A simple monitoring plugin for Vue.js applications, providing error tracking, performance monitoring and user behavior analysis

139 lines (98 loc) 4.95 kB
# VueMonitor > 一个简单的 Vue.js(支持 Vue 2 Vue 3)监控插件,提供错误捕获、性能监控、用户行为追踪等功能。 > 可搭配 [vue-monitor-view](https://github.com/zjsix/vue-monitor-view) 使用,方便查看错误信息。 --- ## 功能特点 - **Vue 错误捕获**:自动捕获 Vue 组件、方法和模板中的错误。 - **全局 JS 错误捕获**:监控原生 JavaScript 错误(`window.onerror`)、未处理的 Promise 异常(`window.onunhandledrejection`)及资源加载错误。 - **用户行为追踪**:自动记录点击事件、输入事件(支持脱敏)、扫码事件。 - **性能监控**:自动采集核心 Web Vitals(如 LCP、FID、CLS、INP、长任务、掉帧等),并记录到用户操作记录中。 - **用户操作(Breadcrumb)记录**:保留最近的用户操作轨迹,方便调试和错误分析。 - **低侵入式**:不修改现有代码逻辑,也不会隐藏控制台报错。 - **易于集成**:Vue 2 可通过 `Vue.use()` 使用,Vue 3 可通过 `app.use()` 使用。 - **自定义上报**:支持自定义 header、body、附加数据等。 --- ## 安装 ```bash npm install @zjsix/vue-monitor ``` --- ## 使用示例 ### Vue 2 ```js import Vue from 'vue'; import VueMonitor from '@zjsix/vue-monitor'; import pkg from '../package.json'; Vue.use(VueMonitor, { reportUrl: '/api/report', // 必填:日志上报接口 projectName: pkg.name, projectVersion: pkg.version, maxBreadcrumbs: 50, errorThrottleTime: 60000, filterInputAndScanData: true, customHeaders: { 'Authorization': 'Bearer xxx' }, customData: { env: 'prod' } }); new Vue({ el: '#app' }); ``` ### Vue 3 ```js import { createApp } from 'vue'; import VueMonitor from '@zjsix/vue-monitor'; import App from './App.vue'; const app = createApp(App); app.use(VueMonitor, { reportUrl: '/api/report', projectName: 'vue3-test', projectVersion: '1.0.0' }); app.mount('#app'); ``` --- ## 配置项说明 | 选项名 | 类型 | 说明 | 默认值 | |--------------------------|-----------------------------|--------------------------------------------------------------|---------------| | reportUrl | string | 日志上报接口地址 | 必填 | | projectName | string | 项目名称 | 可选 | | projectVersion | string | 项目版本 | 可选 | | maxBreadcrumbs | number | 最大用户行为记录数 | 30 | | errorThrottleTime | number | 相同错误上报节流时间(ms) | 60000 | | filterInputAndScanData | boolean | 是否过滤输入框和扫码数据(true 只记录长度,false 记录原文) | true | | customHeaders | Record<string, string> | 上报请求自定义 header | 可选 | | customData | Record<string, any> | 上报请求附加自定义数据 | 可选 | --- ## API ### 全局实例 `$monitor` - `this.$monitor.addBreadcrumb(breadcrumb: Breadcrumb)`:手动添加用户操作记录。 - `this.$monitor.reportError(error: ErrorInfo | Error)`:手动上报错误。 ### 类型定义 ```typescript interface Breadcrumb { type: string; // 行为类型,如 click、input、scan、performance target: string; // 目标元素描述 value?: string; // 行为值(如输入内容、扫码内容、性能数据等) timestamp: string; // 时间戳 } interface ErrorInfo { message: string; stack?: string; url?: string; timestamp: string; [key: string]: any; } ``` --- ## 性能监控说明 - 自动采集 LCP、FID、CLS、INP、长任务、掉帧等核心 Web Vitals。 - 性能数据会以 `performance` 类型记录到用户行为记录中,便于分析。 --- ## 隐私与安全 - 默认情况下,输入框和扫码数据只记录长度,不记录原文内容,保护用户隐私。 - 如需记录原文内容,可将 `filterInputAndScanData` 设为 `false`,请确保符合相关隐私合规要求。 --- ## 贡献 欢迎提 issue PR!如有建议或需求请在 [GitHub](https://github.com/zjsix/vue-monitor) 提出。 --- 如需自定义更多功能,可参考源码或 issue 交流