web-dev-qa-db-fra.com

sourceMappingURL de jquery génère une erreur 404 dans apache

Parcourait les journaux Apache et a trouvé une chose intéressante:

Lorsqu'un utilisateur accède à une page où j'ai inclus jquery, Apache essaie d'obtenir le fichier jquery-xxx.min.map et échoue avec une erreur 404. Voici un exemple:

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"

Ce n'est pas une surprise, car je n'ai clairement pas ce fichier min.map. Je n'aime pas ce comportement.

En regardant dans le code source jquery, j'ai trouvé

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

La première chose est que cette sourceMappingURL est dans le commentaire, et il n'y a pas d'autres hits. Lorsque je viens de le supprimer, l'erreur 404 a disparu.

Je n'ai aucune question que les gens de jquery savaient ce qu'ils font, mais quelqu'un peut-il m'expliquer:

  • quel est l'intérêt de cette sourceMappingURL qui crée une connexion qui se termine par 404?

  • qu'est-ce que je perds quand j'ai supprimé cette ligne?

La seule chose pertinente que j'ai pu trouver est ce lien et d'après ce que j'ai compris (veuillez me corriger si je me trompe) que:

  • il génère des erreurs dans IE (je consultais via Chrome)
  • il est obsolète (j'utilise la dernière version de jQuery au moment où il est)
  • il est utilisé à des fins de débogage (n'ont pas compris à quelles fins de débogage)
31
Salvador Dali

Il existe plusieurs façons de supprimer l'erreur.

  1. Par défaut Chrome activera les cartes sources. Vous pouvez le désactiver en ouvrant les outils de développement et en modifiant les paramètres généraux. Décochez l'option Activer les cartes sources. Cela ne corrigera bien sûr pas l'erreur sur Apache .

  2. Modifiez vos pages pour utiliser un CDN servi par jQuery ou Google plutôt que d'utiliser une version locale. Cela empêchera votre Apache local d'afficher le problème dans vos journaux.

  3. Alternativement, vous devrez réécrire le commentaire en haut de votre version locale de jquery-1.10-2.min.js pour arrêter cette erreur. Sinon, vous devrez attendre un correctif de jQuery.

De:

/*! 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 est une fonctionnalité HTML5 qui a subi quelques modifications au cours des derniers mois.

31
Ryan Skoblenick

Le fichier JQuery 2.1.4 min provoque 404 avec IE> 8 lorsqu'il essaie de télécharger le fichier de carte. Jquery-2.1.4.min.js a ce qui suit comme dernière ligne:

//# sourceMappingURL=jquery.min.map

Il existe deux (bonnes) options pour résoudre ce problème.

Option ONE (préféré, conserve la demande de fichier de carte pour la production)

Étape 1. Déplacez la dernière ligne du fichier min vers la deuxième ligne comme ci-dessous

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

Notez que les points sont supprimés dans jquery.min.map.

Étape 2. Ajoutez un ensemble pour le fichier de carte sans transformations.

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

Même si c'est la méthode préférée, elle vous oblige à modifier le fichier source (jquery-2.1.4.min.js). Espérons que le développeur JQuery ou IE corrigera le problème dans la prochaine version.

Option DEUX

Ajoutez le paquet jquery sans supprimer les transformations (ce qui fait que le moteur MVC supprime la dernière ligne du fichier 2.1.4 min qui à son tour indiquera au navigateur de ne pas demander le fichier de carte).

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

Ces deux options corrigeront le fichier 404 sur la carte pour IE> 8 et JQuery 2.1.4 mais je préfère l'option ONE.

0
Meeting Attender