javascript - 了解源映射

标签 javascript source-maps

我在 basic.js 文件中有以下带有行号的代码:

1 /**
2  * This is a multi-line comment.
3  * So the error shouldn't throw until a later line.
4  * Om nom nom.
5 */
6 throw new Error('Hello world!');

然后我缩小了文件:

1
2 throw new Error('Hello world!');
3 //@ sourceMappingURL=basic.js.map

以及映射:

{
    "version" : 3,
    "file" : "basic.min.js",
    "sources" : ["basic.js"],
    "names" : [],
    "mappings" : "AAIG,AAAH;CACC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"
}

我正在查看缩小文件中的第二行,因此我需要查看映射的这一部分:

CACC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"

我已经使用此 decoder 解码了第一段 CACC它输出:

[1,0,1,1]

据我了解,根据this tutorial它指出 basic.min.js 中的列 1 映射到 sources 中索引为 0 的文件,即 basic.js,并映射到其第 1 行和第 1 列。但它映射到原始编号中的第 6 行。我错过了什么?

最佳答案

你错过了

  1. 行和列都是从零开始的
  2. 段值实际上是与前一个值相加的增量以获得当前位置

逐行:

//basic.js
0 /**
1  * This is a multi-line comment.
2  * So the error shouldn't throw until a later line.
3  * Om nom nom.
4 */
5 throw new Error('Hello world!');

//basic.min.js
0 
1 throw new Error('Hello world!');
2 //@ sourceMappingURL=basic.js.map

//line 0
AAIG >  0,  0,  4,  3 // current value 0, 0, 4, 3
AAAH >  0,  0,  0, -3 // current value 0, 0, 4, 0
;
//line 1
CACC >  1,  0,  1,  1 // current value 1, 0, 5, 1

1 // output file column
0 // input file index
5 // input file line
1 // input file column

这让我们知道生成的文件的第 1 行、第 1 列映射到文件 0(在文件数组中,0 是 basic.js)、第 1 列的第 5 行。

看看可视化工具here

关于javascript - 了解源映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36906656/

相关文章:

google-chrome - 如何使用 uglifyjs2 和 Ionic 加载 sourcemaps?

less - 当你的项目中有多个文件时,如何使用 Grunt 为 LESS 配置 sourceMaps?

javascript - 如何从 JavaScript 中的另一个对象数组中的对象数组获取底层属性

JavaScript 源映射不适用于 Android WebView 环境

javascript - 源映射错误 : Error: request failed with status 404 Resource URL: https://cdn. jsdelivr.net/npm/@barba/core@2.9.7 源映射 URL : barba. umd.js.map

javascript - 全局 map 图 block 消失超过缩放级别 19

javascript - Visual Studio 2015 不支持的源映射格式

javascript - 北极星 shopify 导入 css 问题

javascript - 使用 setInterval 模拟 setTimeout 不适用于嵌套

javascript - 如何使用JavaScript从下到上垂直显示文本?