0

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

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

在几乎所有方法和函数上,我都使用典型的 try { } catch(e) {ss.error(e);} 语句,其中 ss.error() 是一个通用错误处理程序,根据环境打印出调试内容或报告回到例外...

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

错误!type:TypeError at Db (/jsc/compiled.js:547:246) msg​​:Cannot call method 'ka' of undefined source:

在我得到这些类型的错误后,我必须做两个步骤: 1. 摆弄第 547 char 246 行的编译代码,并尝试找出我的未编译代码中的哪一部分是指... 2. 找到它之后,删除 try/catch 块,这样我就可以直接更清楚地看到导致错误的原因......

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

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

想法?

4

1 回答 1

0

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

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

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

于 2012-05-22T00:53:15.930 回答