web-dev-qa-db-ja.com

jqueryのsourceMappingURLはApacheで404エラーを生成します

Apacheログを閲覧していて、興味深いことがわかりました。

ユーザーがjqueryを組み込んだページにアクセスすると、Apacheはjquery-xxx.min.mapファイルを取得しようとし、404エラーで失敗しました。次に例を示します。

xxx.xxx.xxx - - [Date:TIME +0000] "GET /js/lib/jquery-1.10.2.min.map HTTP/1.1" 404 3134 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"

私は明らかにこのmin.mapファイルを持っていないので、これは驚きではありません。私はこの動作が好きではありません。

Jqueryのソースコードを見て、私は見つけました

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.2.min.map

まず、このsourceMappingURLがコメントに含まれており、他のヒットはありません。取り除いたところ、404エラーが消えました。

私はjqueryの人々が彼らが何をしているのか知っていたという質問はありませんが、誰でも私を説明できます:

  • 404で終わる接続を作成するこのsourceMappingURLのポイントは何ですか?

  • この行を削除すると何が失われますか?

私が見つけることができた唯一の関連するものは このリンク であり、私が理解している限り(私が間違っている場合は私を正してください):

  • IE(Chromeで表示していた)でエラーが発生する)
  • 廃止予定です(現時点では最新バージョンのjQueryを使用しています)
  • デバッグ目的で使用されます(どのデバッグ目的で理解していないか)
31
Salvador Dali

エラーを取り除く方法はいくつかあります。

  1. デフォルトでChromeはソースマップを有効にします。これを無効にするには、開発者ツールを開いて一般設定を変更します。ソースマップを有効にするオプションのチェックを外します。これにより、Apacheのエラーは修正されません。

  2. ローカルバージョンを使用するのではなく、jQueryまたはGoogleが提供するCDNを使用するようにページを変更します。これにより、ローカルApacheがログに問題を表示しなくなります。

  3. または、jquery-1.10-2.min.jsのローカルバージョンの上部にあるコメントを書き換えて、このエラーを停止する必要があります。それ以外の場合は、jQueryによるパッチを待つ必要があります。

から:

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.2.min.map
*/

に:

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license */

sourceMappingURLは、過去5か月間にいくつかの変更が行われたHTML5機能です。

31
Ryan Skoblenick

JQuery 2.1.4 minファイルは、マップファイルをダウンロードしようとすると、IE> 8で404を引き起こします。jquery-2.1.4.min.jsの最後の行は次のとおりです。

//# sourceMappingURL=jquery.min.map

これを修正するには2つの(良い)オプションがあります。

オプションONE(マップファイルリクエストを本番用に保持することをお勧めします)

ステップ1.以下のように、minファイルの最後の行を2行目に移動します

/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
//# sourceMappingURL=jqueryminmap

jquery.min.mapでドットが削除されていることに注意してください。

ステップ2.変換なしのマップファイルのバンドルを追加します。

        var jquerymap = new ScriptBundle("~/bundles/jqueryminmap").Include(
                    "~/Scripts/jquery-2.1.4.min.map");
        jquerymap.Transforms.Clear();
        bundles.Add(jquerymap);

これは推奨される方法ですが、ソースファイル(jquery-2.1.4.min.js)を変更する必要があります。うまくいけば、JQuery開発者またはIEが次のリリースで問題を修正するでしょう。

オプション2

変換を削除せずにjqueryバンドルを追加します(これにより、MVCエンジンは、2.1.4分のファイルの最後の行を削除し、マップファイルを要求しないようブラウザーに指示します)。

        var jquery = new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js");
        bundles.Add(jquery);

これらのオプションは両方とも、IE> 8およびJQuery 2.1.4のマップファイルの404を修正しますが、オプションONEを優先します。

0