49

致力于将 JavaScript 源映射构建到我的工作流程中,并且我一直在寻找一些关于调试源映射特定部分的文档。在下图中,我正在运行压缩的 Javascript 代码,但通过源映射的魔力,Chrome 调试器能够重建看似未压缩的代码供我调试:

源地图

但是,如果你看一下局部变量,someNumbersomeOtherNumber没有定义。相反,我们有ar,它们是这个函数的编译变量名。这对于 Mozilla Firefox 和 Chrome 都是一样的。

我尝试查看源地图上的Chrome DevTools 文档,但没有看到任何关于此的内容。这是源映射调试的当前限制吗?是否有任何解决方法?

更新

从那以后,我在 chromium 项目问题中发现了这个线程。它看起来不像已经实施或正在实施。随着团队开始在他们的构建系统中实现 Babel 以编写 ES2015 代码,这正成为一个越来越重要的问题。有没有团队找到解决这个问题的方法?

4

3 回答 3

3

Watch Expressions在右手边使用,通常可以解决这个问题。展开菜单,然后使用加号按钮添加变量。您可以使用someNumberand someOtherNumber,甚至someNumber + someOtherNumber

于 2015-09-17T17:56:51.600 回答
2

看起来它已得到解决,并将在下一次 Chromium 更新中可用

于 2016-03-17T02:09:24.390 回答
1

在 Javascript 源映射中映射变量名仍然没有解决方案,但是 Babel 6 有一个解决方案。由于我们采用了 ES2015,因此损坏的导入名称成为开发过程中的主要痛点。因此,我创建了 CommonJS 模块转换的替代方案,它不会更改名为babel-plugin-transform-es2015-modules-commonjs-simple的导入名称。

只要您不编写依赖于导出动态绑定的模块,它就可以替代默认的 babel commonjs 模块转换:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs-simple

.babelrc

"plugins": ["transform-es2015-modules-commonjs-simple"]

这会将 ES2015 模块编译为 CommonJS,而不会更改导入模块的任何符号名称。自述文件中描述了注意事项。

但是,这不会帮助您缩小/丑化,因此最好的解决方案似乎是在开发过程中不要使用缩小。那么至少如果您必须在生产网站上调试某些东西,这只是一个问题。

于 2016-02-24T17:35:24.760 回答