RUM SDK 会在捕获 React 渲染异常时一并记录两份堆栈:error.stack 记录函数执行时的调用栈,即 JS 堆栈,能定位到实际抛错的语句(例如 formatDiscount 函数第 271 行的 toFixed 调用);errorInfo.componentStack 记录出错组件及其父组件层级,即 React 组件堆栈。JS 堆栈的局限是其中往往只有抛错函数和 React 内部渲染代码,不包含业务组件信息;组件堆栈则补充了出错组件在组件树中的位置。两者结合使用:JS 堆栈给出修改哪一行代码,React 组件堆栈给出哪些业务组件使用了这段代码,从而还原业务路径、判断影响范围。配合 SourceMap 可将两类堆栈中压缩的文件行列位置和组件名(如 Kh、Jh)映射回源码。




