web-dev-qa-db-fra.com

Erreur "code inaccessible après la déclaration de retour" dans le code Google Analytics JS sur Firefox - est-ce ma faute?

J'utilise le code de suivi Google Analytics actuel et sur Firefox 59, j'obtiens cette erreur dans la console:

code inaccessible après l'instruction return

Sur ce javascript: https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code:formatted

Étant donné que ce problème ne semble pas être googleable, il semble donc que d'autres n'aient pas ce problème, je suppose que c'est moi qui fais quelque chose de mal. Mais qu'est-ce que cela pourrait être?

Je mets l'extrait dans <head>, comme le disent les docs:

<!DOCTYPE html>
<html>
    <head>
        <title>some title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code"></script>

        <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.Push(arguments);}
          gtag('js', new Date());
          gtag('config', 'UA-my-tracking-code');
        </script>

    </head>
    <body>
     blah blah 
    </body>
</html>
24
konrados

C'est pas votre faute. Si vous améliorez le code avec Firefox, vous pouvez le trouver ici:

Gc = function (a, b, c) {
  var d = a.split('.');
  var e = function (a, b) {
    for (var c = 0; void 0 !== a && c < d.length; c++) {
      if (null === a) return !1;
      a = a[d[c]]
    }
    return void 0 !== a || 1 < c ? a : b.length ? e(Hc(b.pop()), b)  : Ic(d)
  };
  return e(Cc.eventModel, [         // <= True return value
    b,
    c
  ]);
  return Ic(d)  // <= This can never be reached!
},

Pour embellir le code:

  1. Cliquez sur le lien bleu de l'avertissement. Vous verrez le code tronqué.
  2. Cliquez sur l'icône avec le {} En bas à gauche de ce panneau pour le raffiner. Cependant la référence sera perdue.
  3. Revenez au panneau "Console" et cliquez à nouveau dans le lien bleu du même avertissement. Vous verrez maintenant la référence d'origine dans la bonne ligne.

Firefox pointe correctement le bogue, la fonction Ic(d) ne sera jamais atteinte puisque la fonction revient plus tôt. Cela ressemble à un bogue de Google Tag Manager, mais sans inspecter le code d'origine, nous ne pouvons pas dire la gravité.

12
Me -

Mon TOC ne le permettra pas. Les avertissements sont aussi mauvais que des erreurs dans mon cerveau ... lol

La réponse fournie par @Me - m'a amené à effectuer les opérations suivantes:

  1. Accédez à l'URL dans le <script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script> tag et récupérer une copie du JavaScript.
  2. Déposez-le dans un fichier dans ma solution et remplacez le js src distant par cette nouvelle copie locale.
  3. Reformatez le fichier (prettify).
  4. Commentez la ligne incriminée (si elle ne peut pas être atteinte telle quelle, je ne m'attends pas à ce que des dommages terribles viennent simplement de la retirer).

L'avertissement a disparu, et jusqu'à présent, tout semble fonctionner - aucune erreur/alerte supplémentaire ou nouvelle dans la console et les données Analytics/Tracking ne semblent toujours passer.

Ce n'est clairement pas une solution idéale - je devrai continuer à surveiller cela jusqu'à ce que a) Google corrige leur code (ce qui, incidemment, omet les points-virgules partout - je doute que cela soit proche de passer un Linter) ou b ) Google apporte d'autres modifications au code, provoquant la rupture du mien ou l'arrêt de la communication de mes analyses.

3
challamzinniagroup

Le problème ne se produit pas avec toutes les versions du code de suivi.

gtag

Cet extrait de code, utilisant gtag, provoque le unreachable code after return statement avertissements (dans Firefox):

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-YY"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.Push(arguments);}
    gtag('js', new Date());

    gtag('config', 'UA-XXXXXX-YY');
</script>

Source: la section Admin de Google Analytics: Admin › Tracking Info › Tracking Code, dernière mise à jour Dieu sait quand.

analytics.js

Cet extrait de code, utilisant analytics.js, ne déclenche pas l'erreur:

<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).Push(arguments)};ga.l=+new Date;
ga('create', 'UA-XXXXXX-YY', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>

Tiré de la documentation officielle: Ajout d'analytics.js à votre site (deuxième exemple de code), "Dernière mise à jour le 30 juillet 2018".

N'oubliez pas de mettre à jour XXXXXX-YY avec votre propre ID de propriété.


Quelles sont les différences?

Depuis la section Admin:

Global Site Tag (gtag.js) et Google Tag Manager sont les méthodes de suivi recommandées pour les nouvelles implémentations. Des options d'implémentation supplémentaires sont également disponibles, y compris analytics.js et le protocole de mesure. En savoir plus sur les méthodes de suivi supplémentaires.

De la documentation :

Utilisez analytics.js

La bibliothèque gtag.js est le code de suivi recommandé pour les nouvelles implémentations. Cependant, il peut y avoir des cas où vous préféreriez utiliser analytics.js (par exemple, votre site utilise déjà analytics.js.) Voir la documentation du développeur pour plus d'informations.

2
Fabien Snauwaert