主题
微信小程序接入
原生 / Taro / uni-app 通用(运行时都是 wx.*)。
安装与初始化
bash
npm i @ms-monitor/weapp必须在 App() 和任何 Page() 注册之前调用(放在 app.js 最顶部):
ts
import { init } from '@ms-monitor/weapp';
const client = init({
appId: 'my-weapp',
token: '创建应用时返回的 token', // 写入鉴权,必填(缺失返回 403)
dsn: 'https://monitor.example.com/api/v1/collect',
release: '1.0.0',
});
App({
onHide() {
client.flush(); // 切后台时尽力发出残余队列
},
});采集内容
| 类别 | 内容 |
|---|---|
| 错误 | App.onError、Promise 未捕获、页面不存在、接口错误(劫持 wx.request) |
| 性能 | 页面加载耗时(onLoad→onReady)、setData 次数与体积、接口耗时 |
| 行为 | 页面 PV(onShow)、停留时长(onHide)、启动场景值(扫码/分享/搜索) |
环境上下文自动带:机型、微信版本、基础库版本、系统。
合规注意
上报域名必须配置到小程序后台的 request 合法域名白名单(mp.weixin.qq.com → 开发管理 → 服务器域名)。
SourceMap
小程序发布后代码被微信编译打包。在 CI 上传到微信后台之前,把构建产物的 sourcemap 上传到监控服务端(与 Web 同一个 /api/v1/sourcemaps 接口),错误堆栈即可还原到源码。
目前没有小程序专用上传工具(Vite 插件只覆盖 Web 构建),可直接调接口逐文件上传:
bash
curl -X POST https://monitor.example.com/api/v1/sourcemaps \
-H 'Content-Type: application/json' \
-H 'x-monitor-token: <应用 token>' \
-d "$(jq -n --arg appId my-weapp --arg release 1.0.0 \
--arg file pages/index.js.map \
--rawfile content dist/pages/index.js.map \
'{appId:$appId, release:$release, file:$file, content:$content}')"注意:file 要写成 <bundle>.js.map 形态——服务端按堆栈帧的"文件名 + .map"查找,少了 .map 后缀会存成裸 .js 文件名,堆栈永远还原不出来。