Neatbo.

Source map 堆栈映射

通过普通 v3 source map 映射指定堆栈或坐标,保留未映射帧并明确列编号基准。

浏览器本地处理输入Source map v3 + 堆栈输出JSON / CSV / 映射文本单个文件最多 5 MiB · 最多 1 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

或将文件拖到这里

文件留在当前设备,原始文件不会被覆盖。

.map · .json

单个文件最多 5 MiB · 最多 1 个

    0 个字符 · 0 字节
    处理选项

    先填写标记为必填的选项,其余可保留默认值。

    正在准备处理工具…

    开始之前

    从本地生成代码堆栈恢复原始源码位置。提供配套 map 和准确的生成文件名,逐行检查已映射、未映射及其他文件的帧。

    如何使用

    1. 打开本地普通 .map 文件或粘贴 JSON,填写堆栈中准确的生成文件名或 URL。
    2. 粘贴堆栈或切换到坐标 JSON,映射前选择生成列基准。
    3. 检查每行状态和从 0 开始的原始列,下载完整报告及保留的未映射文本。

    支持范围与限制

    一个 UTF-8 source map 文件或粘贴 JSON,加堆栈或坐标,合计不超过 5 MiB。最多 10,000 个帧、各 10,000 个源码/名称条目、100,000 个生成映射行和 100,000 个映射段。所选文件优先。

    只接受普通 version 3 map,拒绝 indexed sections。严格检查 VLQ 段形状、源码/名称索引、有序且不重复的生成列及非负原始位置。VLQ 值和位置限定在兼容有符号 32 位解码器的范围。拒绝重复或规范化后冲突的源码名称。

    生成行从 1 开始,生成列基准可显式选择从 0 或从 1 开始;原始列始终从 0 开始。生成文件名必须完全一致,在同一生成行按不超过目标列的最近映射段查找。不猜文件名、不联网、不执行源码,sourceRoot 和源码名称保留可见。

    支持有限 Chrome 风格 at 文件:行:列 / at 名称 (文件:行:列)、Firefox 名称@文件:行:列、裸坐标,或 {file?,line,column} JSON 数组。无法解析的行、未映射位置和其他文件帧保留。预览显示 200 行,完整 JSON/CSV 和映射文本可下载。

    操作示例

    示例输入

    {"version":3,"file":"bundle.js","sourceRoot":"/app/","sources":["src/a.ts"],"names":["greet"],"mappings":"AAAAA;AACA"}
    示例参数
    {"secondary": "Error: example\n    at greet (bundle.js:1:1)\n    at bundle.js:2:1\n    at bundle.js:3:1\n    at vendor.js:1:1", "params": {"generatedFile": "bundle.js", "inputFormat": "stack", "columnBasis": "one"}}

    示例输出

    {
      "generatedFile": "bundle.js",
      "inputColumnBasis": "one",
      "originalColumnBasis": "zero",
      "sourceRoot": "/app/",
      "mappings": 2,
      "records": [
        {
          "raw": "Error: example",
          "file": null,
          "line": null,
          "column": null,
          "function": null,
          "index": 1,
          "status": "unparsed",
          "original": null
        },
        {
          "raw": "    at greet (bundle.js:1:1)",
          "function": "greet",
          "file": "bundle.js",
          "line": 1,
          "column": 1,
          "index": 2,
          "status": "mapped",
          "original": {
            "source": "/app/src/a.ts",
            "line": 1,
            "column": 0,
            "name": "greet"
          }
        },
        {
          "raw": "    at bundle.js:2:1",
          "function": null,
          "file": "bundle.js",
          "line": 2,
          "column": 1,
          "index": 3,
          "status": "mapped",
          "original": {
            "source": "/app/src/a.ts",
            "line": 2,
            "column": 0,
            "name": null
          }
        },
        {
          "raw": "    at bundle.js:3:1",
          "function": null,
          "file": "bundle.js",
          "line": 3,
          "column": 1,
          "index": 4,
          "status": "unmapped",
          "original": null
        },
        {
          "raw": "    at vendor.js:1:1",
          "function": null,
          "file": "vendor.js",
          "line": 1,
          "column": 1,
          "index": 5,
          "status": "other-file",
          "original": null
        }
      ]
    }

    出现问题时

    核对生成文件名或 URL 完全一致,并选择正确的列基准。修复不合法映射或使用普通 map,减少帧数量;不支持的堆栈语法可转换为明确坐标 JSON。

    常见问题

    会下载 map 或源码文件吗?

    不会。只在本地处理输入的 map 和帧。

    为什么 vendor 帧保持原样?

    其文件名与指定生成文件不同。请使用正确的 map 与文件组合,不按 basename 猜测。

    能展开 indexed map 的 sections 吗?

    不能。请先得到经过验证的普通 v3 map;工具明确拒绝 sections,避免只映射部分文件。

    文档与延伸阅读

    相关工具