架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1743|回复: 1

[其他] 【实战】前端行号列号通过 map 文件定位到异常源文件

[复制链接]
发表于 2022-6-30 20:04:02 | 显示全部楼层 |阅读模式
需求:将前端项目(Angular、vue)代码部署到生产环境,项目在编译的过程会对代码进行压缩混淆处理,前端报错也可能无法知道异常的地方和原因,如果在编译的时候生成了 map 文件,我们可以借助 map 文件来定位到源文件的位置。

什么是Sourcemap

Sourcemap 本质上是一个信息文件,里面储存着代码转换前后的对应位置信息。它记录了转换压缩后的代码所对应的转换前的源代码位置,是源代码和生产代码的映射。 Sourcemap 解决了在打包过程中,代码经过压缩,去空格以及 babel 编译转化后,由于代码之间差异性过大,造成无法debug的问题。

Sourcemap的作用

简单说 Sourcemap 构建了处理前以及处理后的代码之间的一座桥梁,方便定位生产环境中出现 bug 的位置。因为现在的前端开发都是模块化、组件化的方式,在上线前对 js 和 css 文件进行合并压缩容易造成混淆。如果对这样的线上代码进行调试,肯定不切实际,sourceMap 的作用就是能够让浏览器的调试面版将生成后的代码映射到源码文件当中,开发者可以在源码文件中 debug,这样就会让程序员调试轻松、简单很多。

首先,新建一个 Angular 项目,写一段有问题的代码。

html 代码如下:

ts 代码如下:

在开发阶段,如果出现错误,是非常容易定位到错误的位置,如下图:

QQ截图20220630194902.jpg

将项目 build 成发布包并且生成 map 文件,命令如下:


将生成的文件部署在一个 HTTP 服务器,例如:IIS、Nginx 等。同时,将 map 文件移至其它目录,方便测试。

window下,nodejs 安装 http-server,开启HTTP服务器
https://www.itsvse.com/thread-6838-1-1.html
QQ截图20220630195440.jpg

此时,无法直观的看到错误信息和源代码,我们安装“源码定位工具”,命令如下:

参数介绍:

Usage: sl [options]

Options:
  -v, --version           output the version number
  -p, --source-flie-path  The generated source file  编译后的map文件
  -l, --ine               The line number in the generated source  编译后代码行号
  -c, --column            The column number in the generated source  编译后代码列号
  -h, --help              output usage information
测试通过 map 文件找到源码行号等信息,命令如下:

QQ截图20220630200227.jpg

(完)





上一篇:使用 C# 提取 PDF 文件中的所有文字(支持 .NET Core)
下一篇:前端知识 JavaScript  常说的 ES6, ES8, ES 2017, ECMAScript
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-6-30 21:36:37 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-18 12:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表