Vérifiez vos informations

Il semblerait que les informations techniques de votre profil n'aient pas été actualisées depuis un certain temps... Pour que l'aide apportée vous soit efficace, il est important que ces informations soient à jour : prenez quelques secondes pour confirmer ou compléter les informations suivantes.


Lien de votre forum
Version de ce forum
Vous êtes le fondateur de ce forum
Vous avez modifié le CSS de ce forum
Vous avez modifié les templates de ce forum
Votre navigateur

Problème relié à la compression des javascripts

Voir le sujet précédent Voir le sujet suivant Aller en bas

En cours Problème relié à la compression des javascripts

Message par Le Grand Duc Lun 21 Déc 2020 - 21:19

... ou « Pour quelques millisecondes de moins »
Bonjour,
un problème bizarre aujourd'hui.
Contexte : j'ai deux scripts qui fonctionnent super bien si je les teste indépendamment sur mon site de test.
Problème : quand je les installe tous les deux, ils ne fonctionnent plus ni l'un ni l'autre.
Enquête : je remarque qu'ils sont intégrés en un seul fichier (Est-ce que c'est nouveau ? Il me semble qu'avant ils restaient chacun dans un fichier propre, mais bon... ).
Le constat : à la fin du premier script, il manque un ; !
La preuve :Voici la fin du 1er script : Notez le ; montré par la flêche

Problème relié à la compression des javascripts Fa0110

Le début du second :

Problème relié à la compression des javascripts Fa0210

Or, le débogueur de Chrome accuse mon script d'avoir un identifiant illegal juste à la jonction des deux fichiers, alors j'inspecte le code source, et je constate qu'un ; a été escamoté à quelques caractères de la fin de mon premier script à cet endroit.

Problème relié à la compression des javascripts Fa510

Le débogueur d'Explorer est encore plus précis et signale carrément qu'il manque un ;

Problème relié à la compression des javascripts Fa0610

Le suspect : La compression du code visant à rendre le fichier aussi court que possible : tous les espaces, commentaires ; sauts de ligne ou autres inutiles sont supprimés. Tout ça pour rendre le fichier le moins lourd possible. Bon, c'est bien gentil  de se soucier à ce point de la bande passante de nos utilisateurs, mais trop c'est trop. Il y a des ; qui sont obligatoires, la preuve.
Recommandation de la peine : Obtenir du système FA qu'il ne supprime pas les ; obligatoires. Dans le doute, n'en supprimer aucun. Ce n'est pas pour quelques dizaines de caractères que ça fera une grosse différence.

La Cour se retire, veuillez vous lever s'il vous plaît
Le Grand Duc

Le Grand Duc
***

Messages : 164
Inscrit(e) le : 29/01/2017

Voir le profil de l'utilisateur http://grandduc.forumactif.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

En cours Re: Problème relié à la compression des javascripts

Message par Le Grand Duc Lun 21 Déc 2020 - 22:40

En attendant, j'ai trouvé un contournement : ajouter un énoncé inutile au bon endroit, comme ça le rouleau compresseur passe sa rage sur une autre ; qui lui est bien inutile.

Code:
     });
     var truc = 0;
  });
Le Grand Duc

Le Grand Duc
***

Messages : 164
Inscrit(e) le : 29/01/2017

Voir le profil de l'utilisateur http://grandduc.forumactif.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

En cours Re: Problème relié à la compression des javascripts

Message par Le Grand Duc Mer 23 Déc 2020 - 16:58

Bon, j'ai pu trouver un contournement, mais il n'empêche que ce bogue reste une épée de Damoclès sur la rête de tous ceux qui ajoutent des scripts à leur forum. Personne n'a déjà eu un problème similaire ?
Le Grand Duc

Le Grand Duc
***

Messages : 164
Inscrit(e) le : 29/01/2017

Voir le profil de l'utilisateur http://grandduc.forumactif.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

En cours Re: Problème relié à la compression des javascripts

Message par Le Grand Duc Dim 3 Jan 2021 - 23:57

Bonjour,
mon contournement ne marche plus, nos scripts non plus.
On a tj le même problème : le (rouleau) compresseur de script nous supprime un caractère ;

La console de Chrome me signale un « unexpected token 'if' » dans le fichier 99145.js

Problème relié à la compression des javascripts 0036

J'ouvre ce fichier, et on voit effectivement un if ligne 1, car 1. Comment peut-il y avoir une erreur sur le premier caractère du fichier ? Impossible,... à moins que Chrome considère une suite de fichiers script comme un seul et même script et que l'erreur date de la fin du fichier précédent.

Problème relié à la compression des javascripts 01134

Le fichier qui précède s'appelle 16923.js. L'erreur doit donc se trouver à la fin de ce fichier.
J'ouvre le fichier correspondant chez nous et je vois qu'on a exactement );}); à la fin.

Problème relié à la compression des javascripts 0265

Mais j'ouvre ensuite le fichier 16923.js, version compressée de notre script et en effet, il manque encore un ; vers la fin !

Problème relié à la compression des javascripts 0359

Conclusion : on s'est fait encore scrapper un ; Problème relié à la compression des javascripts 2628632689

Cette erreur est assommante, elle peut se produire n'importe quand, d'ailleurs le temps que je fasse cette recherche, ça marche de nouveau sur le forum. ça dépend de l'ordre dans lequel se trouvent les fichiers, et comme à chaque fois qu'on en édite un il se retrouve en tête du peloton, l'erreur peut se produire n'importe quand.
Je ne vois personne se plaindre sur le forum FA. Je pense que d'une part il ne doit pas y avoir beaucoup de forums qui développent leur propres scripts. Mais par contre, j'en vois plusieurs qui disent avoir installé tel ou tel script et que « ça ne marche pas ». 
Ce n'est pas parce qu'ils sont capables d'installer un script qu'ils sont capables d'aller voir pourquoi et comment ça ne marche pas, et naturellement dans un cas comme ça, personne ne peut les aider dans le forum.

Au tout début du javascirpt (oui, j'ai connu cette époque !) les ; en fin d'énoncé étaient facultatifs. En effet, le langage était assez rudimentaire et les navigateurs pouvaient s'en passer. Mais de nos jours, avec l'avènement des fonctions orientées objet, ce n'est plus possible, l'absence de ; peut créer des ambiguïtés. C'est pour ça que personnellement, j'en mets toujours.
C'est clairement expliqué ici : You Might Need Those Semicolons in Your JavaScript After All 

En cas d'ambiguïté, le navigateur est alors forcé de deviner un ; quelque part. S'il devine juste, Bingo ! Vous avez gagné, aller à la case départ et recevez 20 000 $ !  Siffleur
Mais s'il devine de travers, alors là plusieurs choses peuvent se passer :
1° l'erreur cause une erreur de syntaxe et la console vous le signale, c'est comme ça que j'ai pu mettre le doigt sur le bobo, mais il peut arriver un cas plus grave :
2° le ; mal deviné ne cause pas d'erreur de syntaxe. Ce qui arrive, c'est que la fonction qui suit le ; manquant est définie à l'intérieur de l'objet précédent. Elle est correcte, mais comme elle n'existe pas là où elle devrait dans la structure, elle ne sera tout simplement pas exécutée.
Et là, vous pouvez chercher longtemps pourquoi « ça ne marche pas », surtout si c'est un script que vous avez installé des années plus tôt et qui a toujours fonctionné fidèlement. scratch

Alors je lance un appel désespéré : AU SECOURS QUELQU’UN ! salut victoire Bravo2 Désactivez nous ce rouleau compresseur, merci ! Baston Pc ok
Le Grand Duc

Le Grand Duc
***

Messages : 164
Inscrit(e) le : 29/01/2017

Voir le profil de l'utilisateur http://grandduc.forumactif.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum