【问题标题】:Access source map for debugging Closure Compiler?访问源映射以调试闭包编译器?
【发布时间】:2012-05-27 09:07:37
【问题描述】:

我正在整理我的代码库,以便它可以在谷歌的闭包编译器上使用 ADVANCED_OPTIMIZATIONS 进行编译。

在正确设置此任务所需的调试环境(源映射文件、chrome、包装已编译的 js 文件)后,我偶然发现了 try catch 问题。在我的代码库中大量使用 try/catch 语句似乎适得其反。

在几乎所有方法和函数上,我都使用典型的 try { } catch(e) {ss.error(e);} 语句,其中 ss.error() 是一个通用错误处理程序,取决于环境,要么打印出 debug东西或报告异常...

在熨烫我的代码库的过程中,当我遇到需要修复的错误时,会发生什么,而不是让 Chrome 报告有问题的文件和行,而是指向错误处理程序 ss.error()。因此让我无法回溯问题。然而,ss.error() 函数会打印出问题的来源:

错误! type:TypeError at Db (/jsc/compiled.js:547:246) 消息:无法调用 未定义源的方法“ka”:

收到这些类型的错误后,我必须执行两个步骤: 1. 摆弄第 547 char 246 行的编译代码,并尝试找出我的未编译代码中这指的是哪一部分... 2. 找到之后,把try/catch块去掉,这样我就可以直接更清楚地看到是什么导致了错误...

我必须说我对这个工作流程不满意,我需要找到一个替代方案,让我能够正确捕获异常并调试我的已编译和未编译代码,同时保持头脑清醒 =)

我正在考虑以某种方式使用 Line:CharPosition 信息来查询源映射并让 ss.error() 函数映射到我的未编译源代码...

想法?

【问题讨论】:

  • 您是否在已编译的 js 文件的底部包含对源映射的引用://@ sourceMappingURL=src/scripts.source.map.js ?你检查过Introduction to JavaScript Source Maps吗?
  • 不是您要寻找的答案,但“debug”标志加上“formatting=PRETTY_PRINT”使调试比处理源映射更容易。
  • 另外,这不是您正在寻找的解决方案,但您也可以让您的错误处理程序捕获异常的堆栈跟踪。
  • @ChadKillingsworth 可能会成功...
  • @John 我确实捕获了堆栈跟踪,但它在编译代码中没有多大帮助...

标签: javascript google-closure-compiler


【解决方案1】:

作为闭包编译器的一部分,SourceMap 有一个 java 接口。还有各种修复状态的JS实现。我尝试在此处使指向它们的链接保持最新:

http://code.google.com/p/closure-compiler/wiki/SourceMaps

对于 Java 实现,您只需使用 SourceMapConsumerFactory 加载源映射,接口非常简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2017-11-06
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    相关资源
    最近更新 更多