Vue
在 Vue 应用中要使用 Sentry 的话,需要安装 Sentry 的浏览器版本的 JavaScript SDK:@sentry/browser。
npm install --save @sentry/browser @sentry/integrations
Sentry 会自动上报应用引起的所有异常。
而且,当活跃中的组件抛出错误时,name 和 props 状态都会被捕获。这个是通过 Vue 的 config.errorHandler 钩子实现的。
添加下面的代码到 app.js 中:
import Vue from "vue";import * as Sentry from "@sentry/browser";import { Vue as VueIntegration } from "@sentry/integrations";Sentry.init({dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",integrations: [new VueIntegration({ Vue, attachProps: true })],});
另外,Integrations.Vue 接受一些不同的配置,有不同的作用:
- Vue 是可选的,如果不设置,就必须要有 Window.Vue。
- attachProps 是可选的,默认为 true。如果设置为 false,Sentry 将不会上传 Vue 组件的 props。
- logErrors 是可选的,默认为 false。如果设置为 true,Sentry 同样会调用 Vue 的 logError 函数。
Vue 的错误处理 需要注意,如果你想用这个集成,Vue 就不会在调用内部的 logError 。这就是说 Vue 渲染过程中的错误不会显示在开发者控制台中。如果你还是想使用这个功能,确保传递 logErrors: true 选项。
如果你用的是 CDN 或者加载器,我们为每个集成提供了独立的文件,你可以这么用:
<!-- Note that we now also provide a es6 build only --><!-- <script src="https://browser.sentry-cdn.com/5.23.0/bundle.es6.min.js" integrity="sha384-ctVIHkuneDOr6QAzHv0rcNu0vWe47aCH7jrMQnO7o37Z7G5zDVq9b++/C7opuatD" crossorigin="anonymous"></script> --><scriptsrc="https://browser.sentry-cdn.com/5.23.0/bundle.min.js"integrity="sha384-5yYHk2XjpqhbWfLwJrxsdolnhl+HfgEnD1UhVzAs6Kd2fx+ZoD0wBFjd65mWgZOG"crossorigin="anonymous"></script><!-- If you include the integration it will be available under Sentry.Integrations.Vue --><scriptsrc="https://browser.sentry-cdn.com/5.23.0/vue.min.js"integirty="sha384-HvKPtlBmUYHo02VaRMvZbJL7PLFvYy7c0c3c9ZaY5M3OtiY2ywraZe8au7WtLbCH"crossorigin="anonymous"></script><script>Sentry.init({dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",integrations: [new Sentry.Integrations.Vue({ Vue, attachProps: true })],});</script>
性能监控
npm install --save @sentry/browser @sentry/integrations @sentry/tracing
下面是最基础的一个配置,它只会追踪 Vue 应用最上层的组件。
import * as Sentry from "@sentry/browser";import { Vue as VueIntegration } from "@sentry/integrations";import { Integrations } from "@sentry/tracing";import Vue from "vue";Sentry.init({// ...integrations: [new Integrations.BrowserTracing(),new VueIntegration({Vue,tracing: true,}),],tracesSampleRate: 1.0, // Be sure to lower this in production});
如果你想最终子组件,和过多的渲染细节,需要这么配置集成:
new VueIntegration({Vue,tracing: true,tracingOptions: {trackComponents: true,},});
