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 исправит проблему в следующей версии.
Вариант TWOstrong >
Добавьте пакет 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.