Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用sourcemaps还原原始文件?_Javascript_Source Maps - Fatal编程技术网

Javascript 如何使用sourcemaps还原原始文件?

Javascript 如何使用sourcemaps还原原始文件?,javascript,source-maps,Javascript,Source Maps,我有一个使用Babel从ES6传输到ES5的文件。我有原始地图。我假设我可以使用这些资源恢复原始文件(在ES6中编写时的样子) 怎么做的 是否有CLI工具可以执行此操作?在文本编辑器中打开源代码映射,您将看到它基本上只是一个简单的JSON对象。“sources”字段包含指向所有源文件的URL/路径数组,可以帮助您找到它们。还有一个可选的“sourcesContent”字段,也是一个数组,其中每个项都包含“sources”数组中相同索引处的文件内容;如果是这样,您可以在源代码映射中找到原始代码 C

我有一个使用Babel从ES6传输到ES5的文件。我有原始地图。我假设我可以使用这些资源恢复原始文件(在ES6中编写时的样子)

怎么做的


是否有CLI工具可以执行此操作?

在文本编辑器中打开源代码映射,您将看到它基本上只是一个简单的JSON对象。“sources”字段包含指向所有源文件的URL/路径数组,可以帮助您找到它们。还有一个可选的“sourcesContent”字段,也是一个数组,其中每个项都包含“sources”数组中相同索引处的文件内容;如果是这样,您可以在源代码映射中找到原始代码


CLI工具?嗯,有一种方法试图找到所有原始源代码并将它们预加载到此中。

非常简单的NodeJS实现,我是根据自己的需要编写的

const fs = require('fs');
const { SourceMapConsumer } = require("source-map");

fs.readFile('./example.js', 'utf8' , (err, data) => {
  if (err) return console.error(err);

  const sourceMapData = data.split('//# sourceMappingURL=data:application/json;base64,')[1];
  let buff = new Buffer.from(sourceMapData, 'base64');
  let rawSourceMap = buff.toString('ascii');

  const parsed = SourceMapConsumer(rawSourceMap);

  fs.writeFile('example.ts', parsed.sourcesContent, function (err) {
    if (err) return console.log(err);
  });
});

我认为最基本的方法是使用Mozilla
sourcemap
包,例如
sourcemap.SourceMapConsumer(map.sourcesContent[0]
。考虑将此添加到您的答案。@ GajusKuizinas绝对不需要使用<代码>源映射< /代码>包来完成此任务。code>JSON.parse(map).sourcesContent[0]也会做同样的事情。我没有意识到这一点。谢谢。代码中的错误太多了。