1

Googleクローズコンパイラでコードをコンパイルしています。Googleクローズコンパイラでコードをコンパイルするとエラーが発生する

私がコンパイルしているコードは、クロージャライブラリの関連部分、Hammer、Hammer-Timeと私のコードの一部です。私はその時点で私は私のJavaScriptを実行すると、コンパイルにハンマーを追加するまで

コンピレーション作品私は次のエラーを取得:

Uncaught TypeError: n.add is not a function 

を参照:私は名前を変更する場合

function mb(a, c, e, l, f, k) { 
    if (!c) 
     throw Error("Invalid event type"); 
    var h = !!f 
     , n = nb(a); 
    n || (a[ib] = n = new V(a)); 
    e = n.add(c, e, l, f, k); 
    if (!e.b) { 
     l = Jb(); 
     e.b = l; 
     l.src = a; 
     l.listener = e; 
     if (a.addEventListener) 
      a.addEventListener(c.toString(), l, h); 
     else if (a.attachEvent) 
      a.attachEvent(Kb(c.toString()), l); 
     else 
      throw Error("addEventListener and attachEvent are unavailable."); 
     kb++ 
    } 
} 

をハンマーのaddの機能私はこの問題を抱えていませんが、それに代わるものがあるかどうか疑問に思っていましたか?

全閉コンパイラのコマンドは次のとおりです。

答えて

1

Hammer.jsが近いが、Googleの閉鎖コンパイラによって使用されるコメントと完全に互換性がありませんJSDocのコメントに書かれています。私はこれがあなたのエラーの原因だと思っていますが、確かめるためにはより多くのデバッグが必要です。あなたのコードと一緒にHammer.jsをコンパイルしようとする場合は、Debugging Compiled Codeについてのこのページを参照してください。 Closure Compilerで動作させるには、Hammer.jsコードをいくらか変更する必要があると思います。

もう1つの選択肢は、Closure CompilerにHammer APIを知らせる「extern」ファイルを作成することです。 Closure Compilerでコードをコンパイルした後、Hammerの呼び出しは未解決のままになります。コードをロードする前に、対象のHTMLページにHammer(HammerのWebサイトにある既に圧縮されたバージョン)をロードします。 How do I write an externs file?を参照してください。

JSDocとClosure Compilerの違いは、JSDocは@param {Number}ですが、Closure Compilerはこれをラッパータイプの参照とみなし、@param {number}をプリミティブ番号の型として使用します。

関連する問題