diff --git a/docs/sentry/README.md b/docs/sentry/README.md index b136da9..180f57d 100644 --- a/docs/sentry/README.md +++ b/docs/sentry/README.md @@ -397,6 +397,33 @@ vite build --mode staging ![查看最终效果](./assets/2023-10-23_094614.jpg) +## 上报时携带用户信息 + +在 `init` 时设置 `beforeSend` + +```javascript +import { init } from "@sentry/vue"; +import useUserStore from "@/store/user"; + +let userStore = null; + +init({ + // 省略其他配置…… + // 在 beforeSend 内设置 event.user.* + beforeSend(event) { + userStore = userStore || useUserStore(); + + if (userStore?.user) { + event.user = event.user || {}; + event.user.id = userStore.user.id; + event.user.username = userStore.user.nickname; + } + + return event; + }, +}); +``` + ## ZDB 使用中的客制化 ### 1. 公网转发上报请求 @@ -438,3 +465,27 @@ location /sentry { #### 3. 其他可用方案 即:修改 `根 URL`(Root Url)。修改了之后 sentry 本身的服务也出现了一些问题所以放弃了这个方案,改为修改 DSN + +### 2. 解决钉钉移动端 H5 微应用内无法上报异常的问题 + +在多次提交了工单与技术支持、开发人员争执、讨论后,终于找到了问题的原因。期间钉钉的开发人员明知道自己代码有问题却非要怪我们的服务器有问题,都不肯动手测试一下。😒 + +问题原因: + +1. 钉钉移动端 `webview` 存在问题,使用 `fetch` 发送请求钉钉会将 `body` 置为空,导致服务器返回 `400` + +2. `sentry` 上报默认使用 `fetch`,因此无法上报 + +解决方法: + +使用 `xhr` 上报而不使用 `fetch` + +```js +import { init } from "@sentry/vue"; +import { makeXHRTransport } from "@sentry/browser"; + +init({ + // 省略其他配置…… + transport: makeXHRTransport, +}); +```