sentry-miniapp 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/dist/sentry-miniapp.cjs.js +266 -137
- package/dist/sentry-miniapp.cjs.js.map +1 -1
- package/dist/sentry-miniapp.esm.js +266 -137
- package/dist/sentry-miniapp.esm.js.map +1 -1
- package/dist/sentry-miniapp.umd.js +266 -137
- package/dist/sentry-miniapp.umd.js.map +1 -1
- package/dist/types/client.d.ts +4 -6
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/crossPlatform.d.ts.map +1 -1
- package/dist/types/eventbuilder.d.ts.map +1 -1
- package/dist/types/helpers.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/integrations/dedupe.d.ts.map +1 -1
- package/dist/types/integrations/globalhandlers.d.ts.map +1 -1
- package/dist/types/integrations/index.d.ts +1 -0
- package/dist/types/integrations/index.d.ts.map +1 -1
- package/dist/types/integrations/linkederrors.d.ts.map +1 -1
- package/dist/types/integrations/networkbreadcrumbs.d.ts +29 -0
- package/dist/types/integrations/networkbreadcrumbs.d.ts.map +1 -0
- package/dist/types/integrations/performance.d.ts.map +1 -1
- package/dist/types/integrations/trycatch.d.ts.map +1 -1
- package/dist/types/sdk.d.ts +6 -4
- package/dist/types/sdk.d.ts.map +1 -1
- package/dist/types/transports/offlineStore.d.ts +4 -1
- package/dist/types/transports/offlineStore.d.ts.map +1 -1
- package/dist/types/transports/xhr.d.ts.map +1 -1
- package/dist/types/types.d.ts +4 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +103 -16
package/README.md
CHANGED
|
@@ -68,9 +68,11 @@ Sentry.init({
|
|
|
68
68
|
enableSystemInfo: true, // 自动采集系统与设备信息
|
|
69
69
|
enableUserInteractionBreadcrumbs: true, // 自动记录用户点击行为
|
|
70
70
|
enableNavigationBreadcrumbs: true, // 自动记录页面路由跳转
|
|
71
|
+
traceNetworkBody: true, // [新增] 是否在面包屑中记录网络请求的请求体和响应体 (默认 false)
|
|
71
72
|
|
|
72
73
|
// --- 离线缓存与可靠性 ---
|
|
73
74
|
enableOfflineCache: true, // 开启断网离线缓存与重试机制 (默认开启)
|
|
75
|
+
offlineCacheLimit: 30, // 离线缓存的最大事件数 (默认 30,可调大以防弱网下丢失更多数据)
|
|
74
76
|
|
|
75
77
|
// --- SourceMap 支持 ---
|
|
76
78
|
enableSourceMap: true, // 开启自动将堆栈的虚拟路径转为统一格式,配合上传 sourcemap 时的 --url-prefix "app:///"
|
|
@@ -172,6 +174,92 @@ sentry-cli releases files "your-project-release-id" upload-sourcemaps ./dist \
|
|
|
172
174
|
|
|
173
175
|
---
|
|
174
176
|
|
|
177
|
+
## 💬 用户反馈 (User Feedback)
|
|
178
|
+
|
|
179
|
+
在 Web 环境中,Sentry 提供了一个现成的 `showReportDialog()` 弹窗。但在小程序环境中没有 DOM 无法直接渲染该组件,因此 `showReportDialog()` 已被**废弃**。
|
|
180
|
+
|
|
181
|
+
请您**自行实现一个原生小程序表单(或弹窗)**来收集用户的反馈信息,然后调用 `Sentry.captureFeedback()` 提交到 Sentry 后台:
|
|
182
|
+
|
|
183
|
+
```javascript
|
|
184
|
+
// 当发生错误,或者用户主动点击“反馈”按钮时,展示您自己画的表单:
|
|
185
|
+
const userMessage = '页面卡住了,点什么都没反应';
|
|
186
|
+
const userName = '张三';
|
|
187
|
+
const userEmail = 'zhangsan@example.com';
|
|
188
|
+
|
|
189
|
+
// 将收集到的反馈发送给 Sentry
|
|
190
|
+
Sentry.captureFeedback({
|
|
191
|
+
message: userMessage,
|
|
192
|
+
name: userName,
|
|
193
|
+
email: userEmail,
|
|
194
|
+
// 选填:如果您想把这个反馈和某个具体的错误事件关联起来:
|
|
195
|
+
// associatedEventId: 'abc123xyz...'
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 📦 主包体积优化 (0KB 主包占用方案)
|
|
202
|
+
|
|
203
|
+
小程序的“主包体积”非常宝贵(通常限制在 2MB 以内)。`sentry-miniapp` 由于集成了完整的 `@sentry/core` 核心引擎和多端适配,原始体积约在 200KB 左右。
|
|
204
|
+
|
|
205
|
+
如果您非常在意主包体积,**强烈建议使用平台提供的「分包异步化」或「动态加载」特性**,将 SDK 的体积完全转移到分包中。
|
|
206
|
+
|
|
207
|
+
### 方案 A:微信 / 支付宝小程序(推荐)
|
|
208
|
+
|
|
209
|
+
微信和支付宝等平台原生支持[分包异步化](https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages/async.html)。
|
|
210
|
+
|
|
211
|
+
**具体操作步骤:**
|
|
212
|
+
|
|
213
|
+
1. 将 `sentry-miniapp` 的 npm 包或者构建后的文件放入您的某个分包目录中(例如 `subpackageA`)。
|
|
214
|
+
2. 在您的 `app.js` 顶部,使用 `require.async` 异步懒加载 SDK 并进行初始化:
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
// app.js
|
|
218
|
+
App({
|
|
219
|
+
onLaunch() {
|
|
220
|
+
// 异步加载分包中的 sentry
|
|
221
|
+
require.async('./subpackageA/sentry-miniapp.js').then((Sentry) => {
|
|
222
|
+
Sentry.init({
|
|
223
|
+
dsn: 'https://xxxxxxxx@sentry.io/12345',
|
|
224
|
+
// ...其他配置
|
|
225
|
+
});
|
|
226
|
+
console.log('Sentry 异步加载并初始化成功');
|
|
227
|
+
}).catch(err => {
|
|
228
|
+
console.error('Sentry 加载失败', err);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
*通过这种方式,Sentry 的 200KB 体积将**全部算入 `subpackageA` 的分包体积**,主包占用为 0!*
|
|
235
|
+
|
|
236
|
+
### 方案 B:其他小程序平台(字节、百度等)
|
|
237
|
+
|
|
238
|
+
对于暂不支持 `require.async` 的平台,您可以采用**分包预下载 + API 动态加载**的方式:
|
|
239
|
+
|
|
240
|
+
1. 同样将 SDK 放入分包(如 `subpackageA`)。
|
|
241
|
+
2. 在 `app.js` 中使用平台原生的分包加载 API 先下载分包,下载成功后再通过同步 `require` 引入 SDK:
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
// 以字节小程序为例
|
|
245
|
+
App({
|
|
246
|
+
onLaunch() {
|
|
247
|
+
const loadTask = tt.loadSubpackage({
|
|
248
|
+
name: 'subpackageA',
|
|
249
|
+
success: () => {
|
|
250
|
+
// 分包加载成功后,就可以安全地 require 了
|
|
251
|
+
const Sentry = require('./subpackageA/sentry-miniapp.js');
|
|
252
|
+
Sentry.init({ dsn: '...' });
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
*注:如果您使用的是 Taro / uni-app 等跨端框架,可以直接使用 `import('sentry-miniapp')` 动态导入语法,框架会在编译时自动抹平各端差异。*
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
175
263
|
## ❓ 常见问题 (FAQ)
|
|
176
264
|
|
|
177
265
|
### 1. 初始化后无法自动上报异常,必须在 `onError` 中手动调 API 吗?
|