Ошибка "недостижимый код после оператора возврата" в коде Google Analytics JS в Firefox - это моя ошибка?

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

unreachable code after return statement

На этом 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>

У меня то же самое, вы нашли исправление?

gurtfrobe 05.06.2018 08:05

@gurtfrobe - нет, извини, не знал :(

konrados 05.06.2018 20:40

То же самое здесь сказано firefox 60.0.1. Хотя Хром молчит :)

zalog 06.06.2018 19:15

Я считаю, что это всего лишь предупреждение разработчика - код JavaScript и аналитика работают нормально.

TadejP 17.06.2018 11:51

@TadejP - да, это действительно так, как и большинство вещей, которые можно найти в консоли :) Журналы и предупреждения. Однако лично я не жду предупреждения в случае хорошо зарекомендовавшей себя готовой к производству библиотеки, созданной одним из гигантов. Мне достаточно моих собственных предупреждений, сгенерированных моими собственными библиотеками, находящимися в стадии разработки :) Но да - в остальном вроде работает нормально.

konrados 17.06.2018 23:16

То же предупреждение с firefox 60.0.2 Довольно болезненно. Совершенно согласен с Конрадосом (+1)

PBrockmann 22.06.2018 14:49

То же самое с FF 60.0b2 Dev Edition. Хотя вроде работает нормально. Мне не удалось найти дополнительную информацию по этой теме.

DylanM 25.06.2018 14:51

Кстати, это <head>, а не <header>, тем не менее, он у вас в правильном элементе (<head>)

brandito 27.08.2018 08:31

@Brandito - поправил, спасибо.

konrados 27.08.2018 17:23
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
24
9
4 453
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это нет твоя вина. Если вы измените код с помощью 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, однако, не изучив исходный код, мы не можем определить серьезность.

Спасибо. Да, я тоже в конце концов нашел эту конкретную причину, хотя это не решает проблему :) Тем не менее, вы выполнили свой анализ, и, похоже, это лучшее, что мы можем сделать в любом случае (кроме, возможно, сообщения об ошибке в Google), поэтому я отметил это как ответ. Еще раз спасибо!

konrados 20.07.2018 16:06

Я думаю, вы только проголосовали за мой ответ, но не отметили его как «ответ». Это будет зеленая галочка «✓».

Me - 23.07.2018 04:33

Есть обновления по этому поводу? Я до сих пор получаю эту ошибку в консоли.

JAT86 11.08.2018 17:25

Не совсем @ JAT86 ... не стесняйтесь сообщать об этой ошибке на официальных каналах Google.

Me - 20.08.2018 05:20

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

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

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

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

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

Я бы больше боялся последнего.

brandito 27.08.2018 08:32

@Brandito Я согласен, но первая строка рассматриваемого файла - это // Copyright 2012 Google Inc. All rights reserved. ... так что я не затаив дыхание, ожидая, что Google исправит это. И у меня есть это прямо сейчас в Angular SPA, который требует некоторого дополнительного кода для отслеживания изменений страниц, но, как я уже сказал, сейчас все отслеживается и работает нормально. Ваше здоровье!

challamzinniagroup 28.08.2018 14:21

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

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, указав свой собственный идентификатор собственности.


Какие отличия?

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

Global Site Tag (gtag.js) and Google Tag Manager are the recommended tracking methods for new implementations. Additional implementation options are also available including analytics.js and the Measurement Protocol. Learn more about additional tracking methods.

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

Use analytics.js

The gtag.js library is the recommended tracking code for new implementations. However, there may be cases where you would prefer to use analytics.js (e.g., your site already makes use of analytics.js.) See the developer documentation for more information.

Другие вопросы по теме