我正在整理我的代码库,因此可以在google的闭包编译器上使用ADVANCED_OPTIMIZATIONS进行编译。
在正确设置此任务所需的调试环境(源映射文件,chrome,包装已编译的js文件)之后,我偶然发现了try catch问题。在我的代码库中广泛使用try / catch语句似乎适用于我。
在几乎所有方法和函数中,我使用典型的try {} catch(e){ss.error(e);}语句,其中ss.error()是一个通用的错误处理程序,它依赖于环境打印出调试东西或报告异常......
在熨烫我的代码库的过程中,当我收到需要修复的错误时,会发生的情况是,Chrome不会报告错误的文件和行,而是指向错误处理程序ss.error()。因此,让我无法回避问题。但是,ss.error()函数会打印出问题所在的位置:
错误!类型:Db的TypeError(/jsc/compiled.js:547:246)msg:无法调用 方法'ka'的未定义来源:
在我遇到这些类型的错误后,我必须做两个步骤: 1.在547号字符246处编译已编译的代码,并尝试找出我的未编译代码中的哪一部分引用... 2.找到它后,删除try / catch块,这样我就能直接更清楚地看到导致错误的原因......
我必须说我对这个工作流程不满意,并且需要找到一个替代方案,它既可以让我正确地捕获异常并调试我编译和未编译的代码,同时保持头脑健全=)
我在想某种方式使用Line:CharPosition信息查询源地图并让ss.error()函数映射到我未编译的源代码...
想法?
答案 0 :(得分:0)
作为闭包编译器的一部分,SourceMaps有一个java接口。还有各种修复状态的JS实现。我尝试在这里保持与它们的链接:
http://code.google.com/p/closure-compiler/wiki/SourceMaps
对于Java实现,您只需使用SourceMapConsumerFactory加载源映射,界面非常简单。