SourceMappingURL из jquery генерирует ошибку 404 в apache

Просматривал журналы 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

Во-первых, этот источникMappingURL находится в комментарии, и других ударов нет. Когда я только что удалил его, ошибка 404 исчезла.

У меня нет вопросов, что люди из jquery знали, что они делают, но кто-нибудь может объяснить мне:

  • Какова точка этого sourceMappingURL, которая создает некоторое соединение, которое заканчивается 404?

  • Что я теряю, когда удаляю эту строку?

Единственное, что мне удалось найти, это эта ссылка, и насколько я понял (пожалуйста, позвольте мне, если я ошибаюсь), что:

  • он генерирует некоторые ошибки в IE (я просматривал через Chrome)
  • он устарел (я использую последнюю версию jQuery во время ее существования)
  • он используется для целей отладки (не понял, для каких целей отладки)

Ответ 1

Есть несколько способов удалить ошибку.

  • По умолчанию Chrome будет включать карты источников. Вы можете отключить это, открыв инструменты разработчика и изменив общие настройки. Снимите флажок Включить исходные карты. Это, конечно, не исправит ошибку на Apache.

  • Измените свои страницы, чтобы использовать CDN, обслуживаемый jQuery или Google, вместо использования локальной версии. Это остановит ваш локальный Apache, показывая проблему в ваших журналах.

  • Кроме того, вам придется переписать комментарий в верхней части локальной версии jquery-1.10-2.min.js, чтобы остановить эту ошибку. В противном случае вам нужно будет ждать патча jQuery.

From:

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

To:

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

sourceMappingURL - это функция HTML5, которая в последние месяцы претерпела некоторые изменения.

Ответ 2

JQuery 2.1.4 минутный файл вызывает 404 с IE > 8 при попытке загрузить файл карты. jquery-2.1.4.min.js имеет следующую строку:

//# sourceMappingURL=jquery.min.map

Есть два (хороших) варианта, чтобы исправить это.

Опция ONE (предпочтительнее, сохраняет запрос файла карты для производства)

Шаг 1. Переместите последнюю строку в мини файле во вторую строку ниже

/*! 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 исправит проблему в следующей версии.

Вариант TWO​​strong >

Добавьте пакет jquery без удаления преобразований (что заставляет MVC-движок удалять последнюю строку в файле 2.1.4 мин, что, в свою очередь, будет указывать браузеру не запрашивать файл карты).

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

Оба этих параметра исправят файл 404 на карте для IE > 8 и JQuery 2.1.4, но я предпочитаю вариант ONE.