返回

GTM \

vue.js

修复 GTM "此语言特性仅适用于 ECMASCRIPT6 模式" 错误的终极指南

作为经验丰富的程序员和技术作家,我遇到了许多开发人员在使用 Google 跟踪代码管理器 (GTM) 时遇到的常见错误,即 "此语言特性仅适用于 ECMASCRIPT6 模式"。该错误可能会令人生畏,但解决起来相对简单。在这篇文章中,我将分享一个分步指南,向你展示如何通过以下步骤修复此错误:

1. 理解问题

此错误表明你的 GTM 代码试图在不兼容的 JavaScript 模式下运行。ECMASCRIPT6 (ES6) 是 JavaScript 的一个较新版本,支持现代语法特性。当你的代码包含 ES6 语法时,但 GTM 却在旧的 JavaScript 模式下运行,就会出现此错误。

2. 调整代码以匹配 ECMASCRIPT6 模式

要解决此问题,你需要将代码修改为与 ES6 模式兼容。这包括使用 ES6 语法,例如箭头函数、解构和扩展运算符。有关 ES6 语法的更多详细信息,请参阅 MDN 文档。

3. 在 GTM 中启用 ECMASCRIPT6 模式

GTM 为你提供了启用 ES6 模式的功能。要启用它,请按照以下步骤操作:

  • 打开 GTM 界面。
  • 点击左侧导航栏中的 "变量" 标签。
  • 单击 "新建" 按钮。
  • 在 "变量名称" 字段中输入 "ecmascriptMode"。
  • 在 "变量值" 字段中输入 "es6"。
  • 点击 "保存" 按钮。

4. 在代码中使用 ECMASCRIPT6 语法

启用 ES6 模式后,你可以在代码中使用 ES6 语法。例如,你可以将以下代码:

window.sbHooks.addAction('sbCoreState::CreateBets/success', (data, response) => {

修改为:

window.sbHooks.addAction('sbCoreState::CreateBets/success', function(data, response) {

5. 测试你的代码

修改代码并启用 ES6 模式后,重新发布你的 GTM 容器并检查错误是否消失。如果错误已解决,那么恭喜你!你的代码现在将在 ES6 模式下正常运行。

代码示例:

以下是一个修改后的代码示例,使其与 ES6 模式兼容:

<script>
if (typeof window.sbHooks === 'object') {
  // отправляем данные о достижении цели (размещение ставки/прогноза) в Яндекс Метрику
  window.sbHooks.addAction('sbCoreState::CreateBets/success', function(data, response) {
    //data.express_bet - сумма экспресса, если это значение есть  - то ставка экспресс
    //data.express_tip - текст экспресса
    //добавлен экспресс с прогнозом или без
    if (
      typeof data.express_bet !== 'undefined' &&
      typeof response.body.ids !== 'undefined' &&
      Array.isArray(response.body.ids) &&
      response.body.ids.length > 0
    ) {
      if (typeof yaCounter47035968 != 'undefined') {
        yaCounter47035968.reachGoal('AddTipExpress');
        if (data.express_tip.length > 0) {
          yaCounter47035968.reachGoal('AddReviews');
        }
      }
    }

    // Если это несколько ставок, то переберем их и посмотрим есть ли текст
    if (
      typeof data.express_bet == 'undefined' &&
      data.bets.length > 0
    ) {
      for (var i = 0; i <= data.bets.length - 1; i++) {
        var tip_text = data.bets[i].tip_text;
        if (typeof yaCounter47035968 != 'undefined') {
          yaCounter47035968.reachGoal('AddTipOrdinary');
          if (typeof tip_text !== 'undefined') {
            yaCounter47035968.reachGoal('AddReviews');
          }
        }
      }
    }
  });
}
</script>

结论:

通过遵循这些步骤,你可以轻松修复 GTM 中的 "此语言特性仅适用于 ECMASCRIPT6 模式" 错误。记住,在编码时要始终保持最新,并利用 GTM 提供的强大功能来优化你的网站性能。

常见问题解答:

  1. 为什么我会收到 "此语言特性仅适用于 ECMASCRIPT6 模式" 错误?

    • 因为你的 GTM 代码包含 ES6 语法,但 GTM 却在旧的 JavaScript 模式下运行。
  2. 如何启用 ES6 模式?

    • 请按照本文中第 3 步中的步骤进行操作。
  3. 在代码中如何使用 ES6 语法?

    • 修改代码以使用箭头函数、解构和扩展运算符等 ES6 特性。
  4. 修改代码后如何测试它?

    • 重新发布你的 GTM 容器并检查错误是否消失。
  5. 我在启用 ES6 模式后仍然遇到此错误。我该怎么办?

    • 请检查你的代码是否存在语法错误或与其他库的冲突。