Ionic Pro错误监控是否适用于Ionic View?

时间:2017-12-17 20:54:36

标签: angular cordova typescript ionic-framework

我刚刚将Ionic 2应用程序迁移到Ionic Pro,并按照以下链接中的说明设置错误监控:

https://ionicframework.com/docs/pro/monitoring/

但到目前为止我无法弄清楚它是如何工作的,所以这是我的问题:

我在我的应用程序中使用@ angular / http的HTTP模块与我的API进行通信,因为我使用chrome --disable-web-security功能进行测试,所以我从未在遗留版本中使用代理当我部署到传统的Ionic View时。但是,在我部署到Ionic Pro后,我不得不添加代理以使用Ionic DevApp,当我部署到Ionic View时,它根本不能使用代理。

所以当我在Ionic View中测试时,我希望看到错误和日志,但Ionic的监控页面没有显示任何内容。

以下是app.module.ts中用于错误处理的代码部分:

import { NgModule, Pipe, PipeTransform, ErrorHandler, Injectable, Injector } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { Pro } from '@ionic/pro';

@Injectable()
export class MyErrorHandler implements ErrorHandler {
    ionicErrorHandler: IonicErrorHandler;

    constructor(injector: Injector) {
        try {
            this.ionicErrorHandler = injector.get(IonicErrorHandler);
        } catch (e) {
            // Unable to get the IonicErrorHandler provider, ensure 
            // IonicErrorHandler has been added to the providers list below
        }
    }

    handleError(err: any): void {
        IonicPro.monitoring.handleNewError(err);
        // Remove this if you want to disable Ionic's auto exception handling
        // in development mode.
        this.ionicErrorHandler && this.ionicErrorHandler.handleError(err);
    }
}

  providers: [
      IonicErrorHandler,
      [{ provide: ErrorHandler, useClass: MyErrorHandler }]
  ]
})

我还尝试在login.ts代码中手动发送错误:

import { Pro } from '@ionic/pro';

     err => {

          loader.dismissAll();
          var errorTitle = this.authService.connectionService.GetNoInternetConnectionErrorTitle();
          var errorMessage = this.authService.connectionService.GetNoInternetConnectionErrorMessage();
          if (err.status != 0) {
              console.log(JSON.parse(err._body));
              var errMessageJson = JSON.parse(JSON.parse(err._body));
              console.log("Error Code is " + errMessageJson.ErrorCode);
              errorTitle = errMessageJson.ErrorTitle;
              errorMessage = errMessageJson.ErrorMessage;
          }

          let alert = this.alertCtrl.create({
              title: errorTitle,
              subTitle: errorMessage,
              buttons: ['OK']
          });

          // add error monitoring here
          Pro.getApp().monitoring.exception(new Error('Could not connect to API. Error Message is ' + errorMessage));
          Pro.getApp().monitoring.log('This happens sometimes Could not connect to API.  The whole message object is ' + err, { level: 'error' });

          alert.present();

      },

1 个答案:

答案 0 :(得分:1)

问题似乎是我忘记在index.html中的Content-Security-Policy中将api.ionicjs.com添加到connect-src。添加此内容后,我可以在监控页面中看到错误。