Azure Application Insights 实施 angular6

Azure Application Insights implementation angular6

我正在尝试在 angular6 中实施 Azure Application Insights,

我遇到以下错误:

Failed to initialize AppInsights JS SDK: Cannot load Application Insights SDK, no instrumentationKey was provided.

这意味着我编写的代码正在执行(灵感来自 here

export class AppInsightsService {
  private config: Microsoft.ApplicationInsights.IConfig = {
    instrumentationKey: AppConfig.configuration ? AppConfig.configuration.applicationInsights.instrumentationKey : null,
  };
  constructor() {
    if (!AppInsights.config) {
      AppInsights.downloadAndSetup(this.config);
    }
  }

加载函数前:-

{
      provide: APP_INITIALIZER,
      useFactory: initializeApp,
      deps: [AppConfig], multi: true,
    },

    // Load app-settings which has key also.
    export function initializeApp(appConfig: AppConfig): () => Promise<void> {
      return () => appConfig.load();
    }

load(): Promise<void> {
    return new Promise<void>((resolve, reject) => {
      this.http.get<Configuration>(this.baseUrl + 'api/BackEnd/GetAppSettings').toPromise().then((result) => {
        AppConfig.configuration = result; `// here loading key from app settings.`
        resolve();
      }).catch((response: any) => {
      });
    });
  }

问题:我该如何加载, AppInsights.downloadAndSetup(this.config);在我从加载功能响应中获得密钥后?

您最好的建议是什么?如何在您的应用程序中实现相同类型的 APM?

提前致谢。

免责声明:我自己还没有在 angular 项目上设置 ApplicationInsights,我刚刚研究了这个与您的 post 有关的主题。

关于你的第一个问题: 也许您可以将 AppConfig 的配置修改为 Subject 在你的加载函数中调用 AppConfig.configuration.next(result),在你的 AppInsightsService 中你可以有这样的东西:

constructor() {
    AppConfig.configuration.pipe(take(1)).subscribe(
        config => AppInsights.downloadAndSetup(config))
}

老实说,它有点乱,100% 不是最干净漂亮的方法,但它可以工作。

如果您愿意为处理此问题的项目添加依赖项,可以考虑 https://github.com/TrilonIO/angular-application-insights