2013-09-04 4 views
5

私はAngularとRequireJSを使用します。私はRequireJS最適化を使用しようとしましたが、今ではアプリケーションが動作していません。私はそれが小型化のためだと確信しています。ソースマップを使用して縮小誤差を見つける方法

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=myapp&p1=Error%3…t%20(http%3A%2F%2Flocalhost%3A8080%2Fwebapp%2Fapp%2Fmain-built.js%3A4%3A10)

エラーメッセージは、問題を見つけることは非常に有用ではないので、私は、私は元のソースコード内のエラーを特定するために、ソースマップを使用することができますどのように思っていました。私はChromeを使ってデバッグします。

編集:全エラースタックトレース

Failed to instantiate module myapp due to: 
Error: [$injector:unpr] http://errors.angularjs.org/1.2.0rc1/$injector/unpr?p0=e 
    at Error (<anonymous>) 
    at http://localhost:8080/webapp/app/main-built.js:3:19581 
    at http://localhost:8080/webapp/app/main-built.js:3:31899 
    at n (http://localhost:8080/webapp/app/main-built.js:3:30540) 
    at Object.r [as invoke] (http://localhost:8080/webapp/app/main-built.js:3:30716) 
    at http://localhost:8080/webapp/app/main-built.js:3:30147 
    at Array.forEach (native) 
    at o (http://localhost:8080/webapp/app/main-built.js:3:19891) 
    at i (http://localhost:8080/webapp/app/main-built.js:3:29951) 
    at yt (http://localhost:8080/webapp/app/main-built.js:4:10 

答えて

7

ここでは、それはあなたのために働いて作るべき手順は次のとおりです。

  1. Chromeのデベロッパーツールで設定アイコン(右下隅)をクリックします。
  2. 設定ダイアログで、「ソースマップを有効にする」をチェックします。
  3. デバッグするWebページを開きます。 (この新しいタブで)
  4. オープン開発ツール
  5. はそうクロームマップファイルをダウンロードしません、ページ
    • それは重要だがリロード。
  6. を押して、それはあなたのエラーの権利、すなわちmain.js:12上だ
    • を検査するエラーのリンク。
  7. これだけです。あなたは、人間が読める形式ではなく、あなたのスクリプトのバージョンにリダイレクトされるべきです。

ソースマップがまだ動作していない場合は、次の

//# sourceMappingURL=main.js.map

  • ていることを確認してください:

    1. のようなものは、一番下に、縮小さJSファイルが含まれていることを確認しますマッピングファイルがダウンロードされています。ページの再読み込み中にダウンロードされるように、開発ツールの「ネットワーク」セクションにリストされている必要があります。あなたの出力JSファイルからsourceMappingURLコメントアウト

      source map file download status

    2. たぶんRequireJSの縮小ストリップ:それは次のようになりますか?

      uglify2メソッドを使用していて、generateSourceMapsオプションを有効にしていることを確認してください。ここに兵卒からの私requirejsターゲットの設定の関連部分は次のとおりです。

    requirejs: { 
        compile: { 
        options: { 
         /* some other options here */ 
         optimize: 'uglify2', 
         logLevel: 0, 
         preserveLicenseComments: false, 
         generateSourceMaps: true 
        } 
        } 
    } 
    
  • +0

    私は答えを受け入れたが、私の場合は、エラーのリンクは 'angular.min.jsを参照:7'の代わりに、 'main.built.js'。コンソールでは、 'main.built.js:3'から' angular.min.js:7'に変更されたエラーリンクを簡単に見ることができますが、 'main.built.js 'をクリックすることはできません。エラーリンク。 – Sydney

    +0

    明確にする価値のあることの1つは、縮小されたファイルの最後のアノテーションの '//#'対 '// @'です。 jQueryは "@"を使用し、AngularJSは "#"を使用します。違いが何であるか分かりませんし、新しい質問でもあるはずです... – jmort253

    +2

    @ jmort253 - '// @' [IEの条件付きコメントで問題が発生しました](http://bugs.jquery.com/ticket/13274 #comment:6)、それは '?#'を好んで放棄されているのですか? – kamituel

    関連する問題