小程序错误日志链路处理规范

背景与业务

当线上环境捕获错误日志时,需建立标准化处理流程确保问题闭环。本规范结合导购小程序特点和错误日志的日志级别指定,重点解决生产环境JS报错排查难的问题,同时及时处理异常报错增加线上环境的稳定性。

解决方案:

sourcemap对报错信息进行逆向解析

错误日志排查处理依赖前期的错误监控体系、动态版本号:

  1. 可观测性升级:小程序错误监控体系实践
  2. 小程序自动化构建与版本管理方案优化

标准化处理流程

bash 复制代码
                        level=1
[钉钉告警]--->[TAPD工单] ------> [研发修复] --->[测试验证] ----> [发布更新]
                        |                                       |
                        | level>1                               |
                        └--------------[迭代周期发布]-------------┘

SourceMap

1. 获取方式对比

  • 微信公众后台下载(付费)
  • CI脚本自动获取(免费)

2. 脚本获取

在小程序上传脚本之后添加sourcemap获取的脚本sourcemap.wx.js,代码如下:

javascript 复制代码
const env = process.env.NODE_ENV || 'prod'
const appid = process.env.APP_ID || 'wxxxxxxxxxxxxxxx'
const privateKeyPath = process.cwd() + '/' +`${env}key/private.`+ `${appid}` + '.key';
const version = process.env.VERSION || ''
const ci = require('miniprogram-ci');

const project = new ci.Project({
  appid: appid,
  type: 'miniProgram',
  projectPath: process.cwd() + '/dist',
  privateKeyPath: privateKeyPath,
  ignores: [
    'node_modules/**/*',
    'devkey/**/*',
    'prodkey/**/*',
    'prekey/**/*',
  ],
  reporter: (res)=> {
    console.log('reporter: ', reporter)
  }
})

ci.getDevSourceMap({
  project,
  robot: 1,
  sourceMapSavePath: `./${version}.zip`
})

错误解析

报错信息

javascript 复制代码
MiniProgramError
c is not a function
TypeError: c is not a function
    at u (appservice.js:388:6358)
    at WASubContext.js:1:103490

根据报错信息在错误监控平台找到具体的日志信息:

错误定位

通过微信小程序开发工具定位错误位置:

  1. 在日志库找到对应版本的sourcemap
  2. 在微信小程序调试器->sourcemap定位报错

版本管理

必须检查

✅ SourceMap文件与线上版本严格对应

✅ 生产环境Map文件保留期≥90天

优化建议

搭建SourceMap管理平台,实现错误日志一键解析:

  • 版本文件自动归档
  • 一键逆向解析
相关推荐
妮妮喔妮43 分钟前
图片上传 el+node后端+数据库
javascript·数据库·vue.js
求知若渴,虚心若愚。4 小时前
Error reading config file (/home/ansible.cfg): ‘ACTION_WARNINGS(default) = True
linux·前端·ansible
LinDaiuuj5 小时前
最新的前端技术和趋势(2025)
前端
一只小风华~5 小时前
JavaScript 函数
开发语言·前端·javascript·ecmascript·web
程序猿阿伟6 小时前
《不只是接口:GraphQL与RESTful的本质差异》
前端·restful·graphql
仰望星空的凡人6 小时前
【JS逆向基础】数据库之MongoDB
javascript·数据库·python·mongodb
若梦plus7 小时前
Nuxt.js基础与进阶
前端·vue.js
樱花开了几轉7 小时前
React中为甚么强调props的不可变性
前端·javascript·react.js
风清云淡_A7 小时前
【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据
前端·react.js
小飞大王6667 小时前
React与Rudex的合奏
前端·react.js·前端框架