我刚刚将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();
},
答案 0 :(得分:1)
问题似乎是我忘记在index.html中的Content-Security-Policy中将api.ionicjs.com添加到connect-src。添加此内容后,我可以在监控页面中看到错误。