"unreachable code after return statement" Firefox 上的 Google Analytics JS 代码错误 - 这是我的错吗?

"unreachable code after return statement" error in Google Analytics JS code on Firefox - is this my fault?

我正在使用当前的 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>

不是你的错。如果您使用 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. 单击警告的蓝色 link。你会看到乱码。
  2. 单击该面板左下角带有 {} 的图标对其进行美化。但是引用将会丢失。
  3. 返回 "Console" 面板并再次单击同一警告的蓝色 link。现在您将在正确的行中看到原始参考。

Firefox 正确指出了这个错误,函数 Ic(d) 将永远无法访问,因为函数 returns 更早。似乎是 Google 跟踪代码管理器错误,但如果不检查原始代码,我们无法判断严重性。

我的强迫症不允许这样。警告对我的大脑来说就像错误一样糟糕......大声笑

@Me 提供的答案 - 让我执行了以下操作:

  1. 导航到 <script async src="https://www.googletagmanager.com/gtag/js?id={Google Analytics Id here}"></script> 标签中的 url 并获取 JavaScript.
  2. 的副本
  3. 将它放到我的解决方案中的一个文件中,并用这个新的本地副本替换远程 js src。
  4. 重新格式化文件(美化)。
  5. 注释掉有问题的行(如果它不能按原样到达,我不认为简单地删除它会造成可怕的伤害)。

警告消失了,到目前为止一切似乎都在工作 - 控制台中没有额外的或新的 errors/warnings 并且 Analytics/Tracking 数据似乎仍在通过。

这显然不是一个理想的解决方案 - 我将不得不继续监视它直到 a) Google 修复他们的代码(顺便说一句,省略了所有的分号 - 我怀疑它会接近通过 Linter) 或 b) Google 对代码进行其他更改,导致我的代码中断或我的 Analytics 停止报告。

并非所有版本的跟踪代码都会出现此问题。

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 分析中的管理部分: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>

摘自官方文档:Adding analytics.js to Your Site (第二个代码示例),"Last updated July 30, 2018."

记得用您自己的 属性 ID 更新 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.

From the documentation:

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.