Ionic Angular 应用程序 (cordova) 中的 iOS 和 Android 之间的 console.error(error) (更准确地说是 error.message 值)是否有不同的原因?
我写了这些行以获得异常:
const a = null;
a.top();
然后是我的ErrorHandler 中的console.error(error)。
Android 的输出看起来不错,但 iOS 的输出不够清晰。我认为这就是为什么在 Rollbar 上没有正确构建堆栈跟踪的原因。
输出示例:
日志在跟踪方面有所不同,对于 Android,每个跟踪都以“at ...”开头并以文件名结尾,但对于 iOS,所有错误都以“step@”而不是“at”出现在一行中,并且没有链接去文件。
任何人都知道为什么会这样。
- 科尔多瓦:10.0.0
- 科尔多瓦-ios:6.1.0
- 角度:8.0.0
解决方案 错误是从异步方法引发的。因此,Angular 的 ErrorHandler 会捕获从非等待异步方法抛出的错误,并将错误作为 Promise 返回。
因此在 handleError() 方法中,添加下面的行
if (error.promise && error.rejection) { error = error.rejection; }
// handle your error
由于以下原因找到了这个解决方案: Angular custom error handler not getting error type from promise
完整答案如下。