0

Google のクロージャ コンパイラで ADVANCED_OPTIMIZATIONS を使用してコンパイルできるように、コードベースを修正中です。

このタスクに必要なデバッグ環境 (ソース マップ ファイル、クロム、コンパイルされた js ファイルのラップ) を適切に設定した後、try catch の問題に遭遇しました。コードベースでの try/catch ステートメントの多用が裏目に出たようです。

ほとんどすべてのメソッドと関数で、典型的な try { } catch(e) {ss.error(e);} ステートメントを使用します。ここで、ss.error() は、環境に応じてデバッグ内容を出力するかレポートする一般的なエラー ハンドラーです。例外を戻す...

コードベースを修正する過程で、修正が必要なエラーが発生すると、問題のあるファイルと行を Chrome に報告させる代わりに、エラー ハンドラ ss.error() を指すようになります。したがって、問題を後戻りする方法がありません。ただし、ss.error() func は、問題の発生元を出力します。

エラー!type:Db の TypeError (/jsc/compiled.js:547:246) msg​​: 未定義のソースのメソッド 'ka' を呼び出せません:

これらのタイプのエラーが発生した後、次の 2 つの手順を実行する必要があります。 try/catch ブロックを削除して、エラーの原因を直接、より明確に確認できるようにします...

私はこのワークフローに満足しておらず、正気を保ちながら例外を適切にキャッチし、コンパイル済みおよび未コンパイルのコードをデバッグできる代替手段を見つける必要があると言わざるを得ません =)

Line:CharPosition 情報を使用してソース マップをクエリし、ss.error() 関数でコンパイルされていないソース コードへのマッピングを行うことを考えていました...

アイデア?

4

1 に答える 1

0

クロージャ コンパイラの一部として、SourceMap への Java インターフェイスがあります。さまざまな修復状態の JS 実装もあります。ここでそれらへのリンクを最新の状態に保つようにしています:

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

Java 実装の場合、SourceMapConsumerFactory を使用してソース マップをロードするだけです。インターフェースは非常に単純です。

于 2012-05-22T00:53:15.930 に答える