Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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_Javascript_Dojo_Google Closure Compiler - Fatal编程技术网

调试闭包编译器编译的Javascript

调试闭包编译器编译的Javascript,javascript,dojo,google-closure-compiler,Javascript,Dojo,Google Closure Compiler,我有一个复杂的dojo应用程序,可以正常运行,但在使用Google的编译后,我在一些行为上得到了细微的差异 事实上,调试非常困难,而且我无法找到任何关于编译和未编译Javascript与googleclosure之间可能存在的功能差异的信息 有谁能告诉我已知差异的方向,或者分享类似的经验和从哪里开始寻找的想法吗?通用闭包编译器调试技巧 使用VERBOSE警告级别。这将打开所有检查 使用debug标志。它使重命名的符号长得可笑,但它们的命名方式可以让您找到原始符号。如果代码使用debug标志,但

我有一个复杂的dojo应用程序,可以正常运行,但在使用Google的编译后,我在一些行为上得到了细微的差异

事实上,调试非常困难,而且我无法找到任何关于编译和未编译Javascript与googleclosure之间可能存在的功能差异的信息

有谁能告诉我已知差异的方向,或者分享类似的经验和从哪里开始寻找的想法吗?

通用闭包编译器调试技巧
  • 使用
    VERBOSE
    警告级别。这将打开所有检查
  • 使用
    debug
    标志。它使重命名的符号长得可笑,但它们的命名方式可以让您找到原始符号。如果代码使用
    debug
    标志,但不是没有它,那么几乎可以肯定这是一个重命名问题
  • 一定要使用
    formatting=PRETTY\u PRINT
    。没有它调试压缩代码是痛苦的
  • 使用
  • 使用
    禁用基于类型的优化--使用\u types\u进行\u优化false
    。不正确的类型批注会导致编译器做出无效的假设

更新:自20150315编译器发行版起,基于类型的优化默认启用。

我在dojo 1.3(预关闭)中看到的几个问题:

  • 如果您有一个名为class的类属性,则需要引用它。所以{class:“css”}需要写成{class:“css”}这包括任何小部件字段
  • 确保删除所有调试器语句

在Chad的回答的帮助下,我发现了一个bug,我的工作代码如下:

a = [b, b = a][0]; // swap variable values
汇编的目的是:

a = b;

它可能会在以后的版本中修复,因为在线闭包编译器应用程序的测试不会显示相同的错误。通过不耍聪明,在交换值时使用第三个变量保存旧值来修复此问题。

没有线索。但你可能想给丑八怪一个机会。我是一个超级粉丝。@AlexWayne肯定想结束-dojo构建系统与它配合得特别好。您使用的优化级别是什么?您可以在此处阅读闭包编译器的一些限制:@Bart SIMPLE_OPTIMIZATIONS-代码库中没有带语句的
,只有一个
eval
,它很简单,与我看到的bug毫无关系。感谢Chad,通过此帮助发现了问题,查看我的补充答案:chrome中的Dsource maps很有趣,我总是忘记源地图-添加到答案中。我找不到解决此问题的确切问题,但我会提出并确保。如果没有,我们一定会看看这个。哦,哇,谢谢!我会看看我是否能为您准备一个复制案例,版本为。