4

Chrome で SuperDevMode を使用していますが、突然ソースマップが Chrome に表示されなくなるまで問題なく動作しました。
CodeServer は次の例外をスローします。Multiple fragment 0 sourcemaps found. Too many permutations.

コンパイル中に次のように表示されます。

Compiling 5 permutations
  Compiling permutation 0...
  Source Maps Enabled
  Compiling permutation 1...
  Source Maps Enabled
  Compiling permutation 2...
  Source Maps Enabled
  Compiling permutation 3...
  Source Maps Enabled
  Compiling permutation 4...
  Source Maps Enabled
Compile of permutations succeeded

何か案は?

4

2 に答える 2

4

デフォルトでは、GWT はブラウザのカテゴリごとに 1 つずつ、6 つの基本順列をコンパイルします。

  • Firefox、すべてのバージョン
  • すべての Webkit ブラウザー (Safari、Chrome、Android ブラウザーなど)
  • IE6 と IE7
  • IE8
  • IE9 (および IE10)
  • オペラ

それに関する報告された問題があります:問題 7458: user.agent が見つからない場合、Super Dev Mode は 6 つの順列をコンパイルしないでください

問題の説明からの推奨される回避策:

gwt.xml ファイルでブラウザの順列を制限することです。たとえば、Chrome または Safari を使用している場合:

<set-property name="user.agent" value="safari"/>

また、Sencha GXT を使用している場合は、次の記事も参照することをお勧めします: Using the GWT Compiler for Better Builds

記事によると、gwt.xml に次の行も追加しました。

<collapse-all-properties />

最後に、SuperDev モードの構成は次のとおりです。

<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<set-property name="compiler.useSourceMaps" value="true" />
<set-property name="user.agent" value="safari"/>
<collapse-all-properties />

その結果、GWT は 1 つの順列のみをコンパイルします。

binding: user.agent=safari
binding: compiler.useSourceMaps=true
binding: locale=en
Compiling module com.mycompany.Main
...
Compiling 1 permutation
  Compiling permutation 0...
  Source Maps Enabled
Compile of permutations succeeded
于 2013-07-26T13:32:01.970 に答える
2

これは、ロケールを追加しても、ロケールを明示的に追加したり、ロケールen「削除」したりせず、ブラウザーにページをロードする前に開発モードをオフにしなかった場合に発生する可能性があります。default

たとえば、私のモジュールには次のものがありました。

<extend-property name="locale" values="fr" />
<set-property-fallback name="locale" value="fr"/>

この設定では、 と の 2 つのロケールfrがありますdefault(ただし、defaultフォールバックを にオーバーライドするため、ロケールは使用されなくなりましたfr)。

SuperDevMode を起動すると、2 つの順列がコンパイルされます (おそらく to を強制しlocaleますenが、そのようなロケールがモジュールに存在するかどうかを実際にチェックしないためです)。

以前にアプリを起動してDev Mode Onにしましたが、SuperDevMode を停止して再起動しました。Chrome でページを更新すると、まだ開発モード(状態は に保存されているlocalStorage) であるため、SuperDevMode からスクリプトをロードし、すぐにソース マップをロードしようとしますが、SuperDevMode が 2 つの順列をコンパイルしただけでなく、これは失敗します。 1。
[ Dev Mode On and Compile ] をクリックすると、ブラウザー環境のプロパティを使用して SuperDevMode が強制的に再コンパイルされます (locale=frここでは、フォールバックであるため)。したがって、単一の順列がコンパイルされ、ソース マップが再び機能します。

私の特定のケースでは、単一の順列が必要でした。私がしなければならなかったのは、追加することだけでした<set-property name="locale" value="fr"/>

あなたも同じような状況にあるはずです。

共有できる情報がこれだけで申し訳ありません。権威的なものは何もありません。

于 2012-12-11T14:45:09.800 に答える