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

背景与业务

当线上环境捕获错误日志时,需建立标准化处理流程确保问题闭环。本规范结合导购小程序特点和错误日志的日志级别指定,重点解决生产环境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管理平台,实现错误日志一键解析:

  • 版本文件自动归档
  • 一键逆向解析
相关推荐
疯狂的沙粒14 分钟前
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
前端·uni-app·html
小妖66618 分钟前
html 滚动条滚动过快会留下边框线
前端·html
heroboyluck32 分钟前
Svelte 核心语法详解:Vue/React 开发者如何快速上手?
前端·svelte
海的诗篇_34 分钟前
前端开发面试题总结-JavaScript篇(二)
开发语言·前端·javascript·typescript
琹箐44 分钟前
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
前端·javascript·anti-design-vue
程序员-小李1 小时前
VuePress完美整合Toast消息提示
前端·javascript·vue.js
Uyker2 小时前
从零开始制作小程序简单概述
前端·微信小程序·小程序
Dontla5 小时前
为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
javascript·react.js·ecmascript
EndingCoder6 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
阿阳微客7 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏