GoogleCloudPlatform / GoogleCloudPlatform/stackdriver-errors-js

Fails to report an Angular `HttpErrorResponse`

未关闭
#81 0 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
JavaScript
星标
360
派生
54
PR 合并指标
30 天内没有已合并 PR

描述

## As is

* Using Angular
* Make a service request, throw a 500`HttpErrorResponse`
* Report this error with `StackdriverErrorHandler`
* Get a 400 from the service, error never reported

These errors do not have a stack trace, so the payload sent to the clouderrorreporting api was:

```json
{
"serviceContext": { "service": "my-service" },
"context": {
"httpRequest": {
"userAgent": "Mozilla/5.0 ...",
"url": "http://localhost:3000/app/123"
}
},
"message": "Error extracting stack trace: Error: Cannot parse given Error object\n[object Object]\n (::)"
}
```

The service then responded with:

> 400 - ReportedErrorEvent.context must contain a location unless `message` contain an exception or stacktrace.

## Expected

Errors without a stack would be serialized in a way to maintain as much information as possible.

It is surprising to send "Error extracting stack trace" instead of a message representing the error trying to be reported.

One quick fix I tried to implement was to `JSON.stringify` errors before reporting, those were rejected by the service as "too long".

Overall, would love if the client would do *everything possible* to ensure the error gets reported.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。