Skip to content

微信小程序接入 ​

原生 / 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 文件名,堆栈永远还原不出来。