Ошибка «недостижимый код после оператора возврата» в JS-коде Google Analytics в Firefox - это моя вина? - PullRequest
0 голосов
/ 28 апреля 2018

Я использую текущий код отслеживания Google Analytics, и в Firefox 59 я получаю эту ошибку в консоли:

недоступный код после оператора возврата

На этом JavaScript: https://www.googletagmanager.com/gtag/js?id=UA-my-tracking-code:formatted

Поскольку эта проблема, похоже, не подходит для Google, следовательно, кажется, что другие не имеют этой проблемы, я предполагаю, что это я делаю что-то не так. Но что это может быть?

Я помещаю фрагмент в <head>, точно так же, как документы говорят:

<!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>

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Мой ОКР этого не допустит. Предупреждения так же плохи, как ошибки для моего мозга ... LOL

Ответ, предоставленный @Me - заставил меня выполнить следующее:

  1. Перейдите по ссылке в теге <script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script> и получите копию JavaScript.
  2. Перетащите его в файл в моем решении и замените удаленный js src новой локальной копией.
  3. Переформатировать файл (prettify).
  4. Закомментируйте оскорбительную строку (если она не может быть достигнута как есть, я не ожидаю, что ее простое удаление принесет ужасный вред).

Предупреждение исчезло, и, похоже, все работает: никаких дополнительных или новых ошибок / предупреждений в консоли и данных Analytics / Tracking по-прежнему не поступает.

Это явно не идеальное решение - мне придется продолжать следить за этим, пока либо а) Google не исправит свой код (который, кстати, пропускает точки с запятой во всем - я сомневаюсь, что это близко к передаче Linter ) или b) Google вносит другие изменения в код, что приводит к поломке моего аккаунта или прекращению создания отчетов в Google Analytics.

0 голосов
/ 11 декабря 2018

Проблема возникает не со всеми версиями кода отслеживания.

GTAG

Этот фрагмент кода, использующий gtag, вызывает предупреждения unreachable code after return statement (в 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>

Источник: раздел администратора в Google Analytics: Admin › Tracking Info › Tracking Code, последнее обновление, которое Бог знает, когда.

analytics.js

Этот фрагмент кода, использующий analytics.js, не вызывает ошибку:

<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>

Взято из официальной документации: Добавление analytics.js на ваш сайт (второй пример кода), «Последнее обновление 30 июля 2018 года».

Не забудьте обновить XXXXXX-YY, указав свой собственный идентификатор недвижимости.


В чем различия?

Из раздела администратора:

Глобальный тег сайта (gtag.js) и Google Tag Manager - рекомендуемые методы отслеживания для новых реализаций. Также доступны дополнительные варианты реализации, в том числе analytics.js и Протокол измерений. Подробнее о дополнительных методах отслеживания.

Из документации :

Использовать analytics.js

Библиотека gtag.js является рекомендуемым кодом отслеживания для новых реализаций. Однако могут быть случаи, когда вы предпочитаете использовать analytics.js (например, ваш сайт уже использует analytics.js.) Дополнительные сведения см. В документации для разработчиков.

0 голосов
/ 17 июля 2018

Это не ваша вина. Если вы предварительно подтвердите код с помощью Firefox, его можно найти здесь:

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!
},

Для предварительного кодирования:

  1. Нажмите на синюю ссылку предупреждения. Вы увидите искаженный код.
  2. Нажмите на значок с {} в левом нижнем углу этой панели, чтобы предварительно подтвердить его. Однако ссылка будет потеряна.
  3. Вернитесь на панель «Консоль» и снова нажмите синюю ссылку того же предупреждения. Теперь вы увидите исходную ссылку в правильной строке.

Firefox правильно указывает на ошибку, функция Ic(d) никогда не будет достигнута, так как функция возвращается раньше. Похоже, ошибка диспетчера тегов Google, однако без проверки исходного кода мы не можем определить серьезность.

...