为 Application Insights JavaScript SDK 启用框架扩展

除了核心 SDK 之外,还有适用于特定框架的插件,例如 React 插件React Native 插件Angular 插件

这些插件提供额外的功能并与特定框架集成。

先决条件

  • Angular 插件与 ECMAScript 3 (ES3) 不兼容。
  • 当我们添加新的 Angular 版本时,我们的 npm 包将与下层 Angular 版本不兼容。 继续使用旧的 npm 包,直到你准备好升级 Angular 版本。

此插件能够实现什么?

适用于 Application Insights JavaScript SDK 的 Angular 插件支持:

  • 跟踪路由器历史记录
  • 跟踪异常
  • 链接更多自定义异常处理程序

添加插件

若要添加插件,请执行本部分中的步骤。

安装包

npm install @microsoft/applicationinsights-angularplugin-js

将扩展添加到代码

备注

对检测密钥引入的支持将于 2025 年 3 月 31 日结束。 检测密钥引入功能将会继续工作,但我们将不再为该功能提供更新或支持。 转换为连接字符串,以利用新功能

在应用的条目组件中设置 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 插件,请执行以下操作:

  1. 取消对 Click Analytics 的行的注释。

  2. 执行下列操作之一,具体取决于要添加的插件:

    • 对于 React,请删除 extensions: [reactPlugin],
    • 对于 React Native,请删除 extensions: [RNPlugin]
    • 对于 Angular,请删除 extensions: [angularPlugin],
  3. 请参阅使用 Click Analytics 插件以继续执行安装过程。

Configuration

本部分包含适用于 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 { }

链接更多自定义异常处理程序

如果希望应用程序正常处理以前的未经处理的异常,但仍希望将此异常报告为应用程序故障,请链接更多自定义异常处理程序。

若要链接更多自定义异常处理程序,请执行以下操作:

  1. 创建实现 IErrorService 的自定义异常处理程序。

    import { IErrorService } from '@microsoft/applicationinsights-angularplugin-js';
    
    export class CustomErrorHandler implements IErrorService {
        handleError(error: any) {
            ...
        }
    }
    
  2. 通过 extensionConfig 传递 errorServices 数组。

    extensionConfig: {
            [angularPlugin.identifier]: {
              router: this.router,
              errorServices: [new CustomErrorHandler()]
            }
          }
    

收集设备信息

设备信息(包括浏览器、OS、版本和语言)已由 Application Insights Web 程序包收集。

配置(其他)

不适用

示例应用

常见问题

本部分提供常见问题的解答。

Application Insights 如何生成设备信息(例如浏览器、操作系统、语言和型号)?

浏览器在请求的 HTTP 标头中传递用户代理字符串。 Application Insights 引入服务使用用户代理分析程序生成你在数据表和体验中看到的字段。 因此,Application Insights 用户无法更改这些字段。

如果用户或企业禁止在浏览器设置中发送用户代理,则此数据偶尔可能会缺失或不准确。 用户代理分析程序正则表达式可能未包含所有设备信息。 或者 Application Insights 可能未采用最新更新。

后续步骤