调试关闭编译器编译的JavaScript(Debugging Closure-compiler Co

2019-07-17 19:46发布

我有一个复杂的道场的应用程序,可以正常工作未编译,但与谷歌的编译后关闭编译器 ,我得到了一些行为的细微差别。

由于它是,它是极其困难的调试,我一直无法找到与谷歌关闭编译和未编译的JavaScript之间可能存在的功能差异的任何信息。

任何人都可以点我的已知的区别的方向,或分享任何类似的经验和从哪里开始寻找一些想法?

Answer 1:

通用关闭编译调试提示

  • 使用VERBOSE警告级别。 这将打开所有的检查。
  • 使用debug标志。 它使重命名的符号变得特别长,但他们以这样的方式,你可以找到原来的命名。 如果代码的工作原理与debug标志,但不能没有它,它几乎可以肯定是一个重命名问题。
  • 肯定使用formatting=PRETTY_PRINT 。 调试压缩代码,而这是痛苦的。
  • 使用源地图
  • 与禁用类型的基于优化--use_types_for_optimization false 。 不正确类型注释会导致编译器作出无效的假设。

更新:由于20150315编译器发布的,基于类型的优化默认情况下启用。



Answer 2:

与乍得的答案的帮助下,我发现了一个bug在我的工作代码如下所示:

a = [b, b = a][0]; // swap variable values

被编译到:

a = b;

这可能是固定在以后的版本,因为与在线Closure编译器的应用程序测试没有表现出同样的错误。 通过不巧言令色,并使用第三变量,而交换价值来保存旧值固定它。



Answer 3:

我已经看到道场1.3(预闭合)一对夫妇的问题:

  • 如果你有一个名为类类属性,它需要被引用。 所以{类:“CSS”}需要被写成{“类”:“CSS”},这包括任何部件领域。
  • 请确保您删除任何调试器语句。


文章来源: Debugging Closure-compiler Compiled Javascript