Source Map在前端监控中的应用和实践
01
02
支持更简单的配置来通过Webpack的Plugin进行Source Map文件的上传,并且上传过程出现异常不影响项目整体编译流程,代码侵入性低。 支持更多的上传和选择Source Map文件的方式,以适用于更多的业务错误监控的场景,且在使用过程中有更明确的提示和更友好的交互。 支持map文件管理功能,通过项目名称和版本号选择关联,新版本可以选择历史版本的map文件进行匹配。
03
Source Map自动上传插件(支持Webpack3+):使用者在项目打包流程中集成此插件,便可将生成的Source Map自动上传。此插件能够在不影响项目编译流程的前提下,在Webpack输出 asset 到 output目录之后,获取打包生成的map文件并执行上传逻辑。并且可以通过参数配置可以选择在Webpack编译完成执行后对map文件进行删除,不影响上线流程。鉴于历史项目使用Webpack老版本较多,鹰眼针对Webpack不同的版本进行了兼容优化。
手动上传Source Map模块:使用者可针对单条JS错误,上传单个Source Map进行匹配,并且进行了同名检测的提示,在能够自助上传map外也能通过提示减少错误匹配的情况。
Source Map自助选择模块:提供了可以通过Source Map管理中心进行选择map进行关联的功能,对于不能每次每个版本都能上传Source Map文件的项目,能够进行列表和搜索选择需要匹配的map文件。
Source Map定位展示模块:展示JS报错对应的真实源代码及位置。
Source Map管理中心:集中管理Source Map文件的添加删除。
SourceMap自动上传插件拉取项目打包生成的Source Map文件。 调用文件上传中心接口上传文件。文件上传中心有独立的鉴权机制、对接了网络安全服务。 获取SourceMap文件存储信息后连同项目、版本提交至Source Map管理中心。提交完成后可以删除构建过程中产生的Source Map文件。 使用者在前端异常监控系统查看JS报错时,监控系统根据JS报错的项目、版本号从SourceMap管理中心获取Source Map文件。 调用Mozillasource-map库进行解析关联,对源代码信息进行可视化展示。
04
初始化监控平台接入代码时需要携带versionNum字段,该字段为当前项目的版本号,以便于后期错误堆栈和项目map文件进行版本管理处理。 在项目打包时生成map文件(需要独立的map文件)。Webpack对于Source Map的生成配置,建议模式使用hidden-source-map,其能够生成完整独立的map文件且不会泄露sourceMappingURL,但缺点是会造成编译耗时增加。cheap-source-map和cheap-module-source-map因省略一些内容,并不会准确完整的还原错误位置。 打包部署项目时集成map上传插件, 在devDependencies中安装插件,在项目中的Webpack的plugin配置中增加该插件配置。 若接入监控平台时正确传入版本号和项目名称,并且在项目打包时通过map上传插件上传正确版本及项目名称的map文件。鹰眼在发生错误上报堆栈信息时会自动将JS名称和map文件进行匹配,显示其错误正确的源码地址。 若无法自动匹配时,也可以从Source Map管理中心选择该项目和版本对应的map文件进行匹配,或者手动上传map文件自行匹配。
05