{"id":26452949,"url":"https://github.com/alexayan/sentry-mina","last_synced_at":"2025-04-09T07:08:31.941Z","repository":{"id":45209534,"uuid":"160666049","full_name":"alexayan/sentry-mina","owner":"alexayan","description":"小程序 Sentry SDK","archived":false,"fork":false,"pushed_at":"2020-11-04T10:05:11.000Z","size":997,"stargazers_count":209,"open_issues_count":4,"forks_count":34,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T02:18:32.717Z","etag":null,"topics":["miniprogram","sentry"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexayan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-06T11:36:11.000Z","updated_at":"2025-03-24T08:39:17.000Z","dependencies_parsed_at":"2022-08-28T16:41:13.254Z","dependency_job_id":null,"html_url":"https://github.com/alexayan/sentry-mina","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexayan%2Fsentry-mina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexayan%2Fsentry-mina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexayan%2Fsentry-mina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexayan%2Fsentry-mina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexayan","download_url":"https://codeload.github.com/alexayan/sentry-mina/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994121,"owners_count":21030050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["miniprogram","sentry"],"created_at":"2025-03-18T18:40:12.499Z","updated_at":"2025-04-09T07:08:31.922Z","avatar_url":"https://github.com/alexayan.png","language":"JavaScript","readme":"# 小程序 Sentry SDK (Beta)\n\n## 特性\n\n除了 Sentry 基础的特性，还提供以下小程序相关特性\n\n- 记录客户端基本信息\n- 记录页面 request 请求\n- 记录应用生命周期（onAppLaunch, onAppShow, onAppHide）\n- 记录页面导航\n- 记录小程序 api 调用\n- 记录 console 日志\n- 记录应用框架异常和未捕获异常\n- 记录微信小程序 Unhandled Promise Rejection Error\n- 记录 setTimeout, setInterval 内异常\n- 支持小程序 [LogManager](https://developers.weixin.qq.com/miniprogram/dev/api/base/debug/wx.getLogManager.html)\n- 支持小程序实时日志 [getRealtimeLogManager](https://developers.weixin.qq.com/miniprogram/dev/framework/realtimelog/)\n\n## 相关链接\n\n- [Trello](https://trello.com/b/1rlFQOAo/sentry-mina)\n- [Sentry 快速入门](https://docs.sentry.io/quickstart/)\n- [Sentry 官方 API 文档](http://getsentry.github.io/sentry-javascript/)\n\n## 使用\n\n### 安装\n\n- `npm i sentry-mina --save`\n\n### 小程序环境\n\n默认环境为微信小程序，其他平台小程序可在初始化时配置特定平台环境对象\n\n``` javascript\nsentry.init({\n  minaContext: wx\n})\n\nsentry.init({\n  minaContext: {\n    getSystemInfo: () =\u003e {},\n    request: () =\u003e {},\n    setStorage: () =\u003e {},\n    getStorageSync: () =\u003e {},\n    getLaunchOptionsSync: () =\u003e {},\n    // ...\n  }\n})\n```\n\n### 微信开发工具配置\n\n控制台报 `regeneratorRuntime is not defined` 错误，在开发工具上启用 `增强编译` 可解决 [@NullYing](https://github.com/alexayan/sentry-mina/issues/2)\n\n### 微信后台配置\n\n开发中配置 sentry.io 的 url 地址。（sentry.io 未经过 icp 备案，需自己做转发）\n\n### Usage\n\n```javascript\nimport * as sentry from \"sentry-mina\";\n\n// config Sentry\nsentry.init({\n  dsn: ''\n})\n\n// Set user information, as well as tags and further extras\nsentry.configureScope(scope =\u003e {\n  scope.setUser({ id: '4711' });\n  scope.setTag('user_mode', 'admin');\n  scope.setExtra('battery', 0.7);\n  // scope.clear();\n});\n\n// Add a breadcrumb for future events\nsentry.addBreadcrumb({\n  message: 'My Breadcrumb',\n  // ...\n});\n\n// Capture exceptions, messages or manual events\nsentry.captureMessage('Hello, world!');\nsentry.captureException(new Error('Good bye'));\nsentry.captureEvent({\n  message: 'Manual',\n  stacktrace: [\n    // ...\n  ],\n});\n\n```\n\n### INTEGRATIONS\n\n#### Breadcrumbs\n\n``` javascript\nnew sentry.Integrations.Breadcrumbs({\n  console: true,\n  realtimeLog: ['info', 'warn', 'error'], // https://developers.weixin.qq.com/miniprogram/dev/framework/realtimelog/\n  request: true,\n  navigation: true,\n  api: true,\n  lifecycle: true,\n  unhandleError: true\n})\n```\n\n配置 | 类型 | 默认值 |描述\n------------- | ------------- | ------------- | -------------\nconsole  | Boolean, Array | true |是否记录 console 日志，如果值为数组 ['log', 'info']，则只记录数组中所列的日志\nrealtimeLog | Boolean, Array | true |是否记录实时日志，如果值为数组 ['log', 'info']，则只记录数组中所列的日志。将程序中通过 console 打的日志记录到小程序实时日志中, console.log 通过 realtimeLog.info 进行记录\nrequest  | Boolean | true | 是否记录页面 request 请求\nnavigation  | Boolean | true | 是否记录页面导航信息\napi  | Boolean | true | 是否记录小程序 API 调用\nlifecycle  | Boolean | true | 是否记录小程序生命周期变化\nunhandleError | Boolean | true | 是否记录微信小程序 Unhandled Promise Rejection Error\n\n#### TryCatch\n\n捕获并记录 setTimeout, setInterval 内的异常\n\n```javascript\nnew sentry.Integrations.TryCatch()\n```\n\n#### LogManager\n\n将 Sentry 事件数据记录到小程序 LogManager\n\n```javascript\nnew sentry.Integrations.LogManager({\n  level: 0\n})\n```\n\n配置 | 类型 | 默认值 |描述\n------------- | ------------- | ------------- | -------------\nlevel  | Number | 0 | 取值为0表示是否会把 App、Page 的生命周期函数和 wx 命名空间下的函数调用写入日志，取值为1则不会\n\n#### GlobalHandlers\n\n记录 app.onError 和 app.onPageNotFound 日志\n\n```javascript\nnew sentry.Integrations.GlobalHandlers()\n```\n\n### TRANSPORT\n\n目前小程序只支持通过 request 发送日志到服务器，由于小程序 request 有并发限制, `sentry-mina` 以队列的方式发送日志请求，避免过多占用请求资源。\n\n`sentry-mina` 发送日志，支持失败重试，默认重试 2 次。可以通过以下方式\n\n```javascript\nsentry.init({\n  transportOptions: {\n    retry: 2\n  }\n})\n```\n\n进行配置。\n\n`sentry-mina` 会记录未发送的日志，当用户重新进入小程序，会继续发送。\n\n## PREVIEW\n\n![stack](static/stack.png)\n![breadcrumbs](static/breadcrumbs.png)\n![meta](static/meta.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexayan%2Fsentry-mina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexayan%2Fsentry-mina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexayan%2Fsentry-mina/lists"}