目前前端部署的代码一般都是经过webpack压缩的,压缩的目的一般如下:
SourceMap在其中扮演了一个十分重要的角色,用来作为源代码和编译代码之间的映射,方便开发定位问题。
一般在压缩 js 的过程中,会生成相应的 sourcemap 文件,并且在压缩的 js 文件末尾追加 sourcemap 文件的链接 ,如://# sourceMappingURL=xxxx.js.map。这样,浏览器在加载这个压缩 过的js 时,就知道还有一个相应的 sourcemap 文件,也会一起加载下来,运行的过程中如果 js 报错,也会给出相应源代码的行号与列号,而非压缩文件的。
其实Sourcemap初衷是方便开发排错,但是不应该用在生产环境,如果用在生产环境,就可以通过sourcemap文件中的映射,还原出前端完整代码。
reverse-sourcemap -v 1.js.map -o code
还原前端代码,发现报错,看报错原因就知道又是换行符的问题:vi /usr/local/bin/reverse-sourcemap
命令,vi打开后,输入:set ff
查看文件格式果然为dos格式::set ff=unix
,将文件格式转为unix格式,之后保存退出,输入reverse-sourcemap -v 1.js.map -o code
将代码还原: