为 Application Insights JavaScript SDK 启用框架扩展
除了核心 SDK 之外,还有适用于特定框架的插件,例如 React 插件、React Native 插件和 Angular 插件。
这些插件提供额外的功能并与特定框架集成。
- 安装 JavaScript SDK。
- Angular 插件与 ECMAScript 3 (ES3) 不兼容。
- 当我们添加新的 Angular 版本时,我们的 npm 包将与下层 Angular 版本不兼容。 继续使用旧的 npm 包,直到你准备好升级 Angular 版本。
适用于 Application Insights JavaScript SDK 的 Angular 插件支持:
- 跟踪路由器历史记录
- 跟踪异常
- 链接更多自定义异常处理程序
若要添加插件,请执行本部分中的步骤。
npm install @microsoft/applicationinsights-angularplugin-js
在应用的条目组件中设置 Application Insights 实例:
重要
使用 ErrorService 时,@microsoft/applicationinsights-analytics-js
扩展上存在隐式依赖项。 你必须加入 '@microsoft/applicationinsights-web'
或加入 @microsoft/applicationinsights-analytics-js
扩展。 否则,不会发送错误服务捕获的未经处理的异常。
import { Component } from '@angular/core';
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
import { AngularPlugin } from '@microsoft/applicationinsights-angularplugin-js';
// *** Add the Click Analytics plug-in. ***
// import { ClickAnalyticsPlugin } from '@microsoft/applicationinsights-clickanalytics-js';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(
private router: Router
){
var angularPlugin = new AngularPlugin();
// *** Add the Click Analytics plug-in. ***
/* var clickPluginInstance = new ClickAnalyticsPlugin();
var clickPluginConfig = {
autoCapture: true
}; */
const appInsights = new ApplicationInsights({
config: {
connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE',
// *** If you're adding the Click Analytics plug-in, delete the next line. ***
extensions: [angularPlugin],
// *** Add the Click Analytics plug-in. ***
// extensions: [angularPlugin, clickPluginInstance],
extensionConfig: {
[angularPlugin.identifier]: { router: this.router }
// *** Add the Click Analytics plug-in. ***
// [clickPluginInstance.identifier]: clickPluginConfig
}
}
});
appInsights.loadAppInsights();
}
}
如果要添加 Click Analytics 插件,请执行以下操作:
取消对 Click Analytics 的行的注释。
执行下列操作之一,具体取决于要添加的插件:
- 对于 React,请删除
extensions: [reactPlugin],
。 - 对于 React Native,请删除
extensions: [RNPlugin]
。 - 对于 Angular,请删除
extensions: [angularPlugin],
。
- 对于 React,请删除
请参阅使用 Click Analytics 插件以继续执行安装过程。
本部分包含适用于 Application Insights JavaScript SDK 的框架扩展的配置设置。
名称 | 类型 | 必需? | 默认 | 说明 |
---|---|---|---|---|
路由器 | 对象 (object) | 可选 | Null | Angular 路由器,用于启用 Application Insights PageView 跟踪。 |
以下代码示例展示了如何启用路由器历史记录的跟踪。
import { Component } from '@angular/core';
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
import { AngularPlugin } from '@microsoft/applicationinsights-angularplugin-js';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(
private router: Router
){
var angularPlugin = new AngularPlugin();
const appInsights = new ApplicationInsights({ config: {
connectionString: 'YOUR_CONNECTION_STRING',
extensions: [angularPlugin],
extensionConfig: {
[angularPlugin.identifier]: { router: this.router }
}
} });
appInsights.loadAppInsights();
}
}
若要跟踪未捕获的异常,请在 app.module.ts
中设置 ApplicationinsightsAngularpluginErrorService:
重要
使用 ErrorService 时,@microsoft/applicationinsights-analytics-js
扩展上存在隐式依赖项。 你必须加入 '@microsoft/applicationinsights-web'
或加入 @microsoft/applicationinsights-analytics-js
扩展。 否则,不会发送错误服务捕获的未经处理的异常。
import { ApplicationinsightsAngularpluginErrorService } from '@microsoft/applicationinsights-angularplugin-js';
@NgModule({
...
providers: [
{
provide: ErrorHandler,
useClass: ApplicationinsightsAngularpluginErrorService
}
]
...
})
export class AppModule { }
如果希望应用程序正常处理以前的未经处理的异常,但仍希望将此异常报告为应用程序故障,请链接更多自定义异常处理程序。
若要链接更多自定义异常处理程序,请执行以下操作:
创建实现 IErrorService 的自定义异常处理程序。
import { IErrorService } from '@microsoft/applicationinsights-angularplugin-js'; export class CustomErrorHandler implements IErrorService { handleError(error: any) { ... } }
通过 extensionConfig 传递 errorServices 数组。
extensionConfig: { [angularPlugin.identifier]: { router: this.router, errorServices: [new CustomErrorHandler()] } }
设备信息(包括浏览器、OS、版本和语言)已由 Application Insights Web 程序包收集。
不适用
本部分提供常见问题的解答。
浏览器在请求的 HTTP 标头中传递用户代理字符串。 Application Insights 引入服务使用用户代理分析程序生成你在数据表和体验中看到的字段。 因此,Application Insights 用户无法更改这些字段。
如果用户或企业禁止在浏览器设置中发送用户代理,则此数据偶尔可能会缺失或不准确。 用户代理分析程序正则表达式可能未包含所有设备信息。 或者 Application Insights 可能未采用最新更新。