Ошибка в диспетчере тегов Google: эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше

#google-tag-manager

#google-tag-manager

Вопрос:

Я получаю следующее сообщение об ошибке в диспетчере тегов Google:

Ошибка na linha 3, глава 13: эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: объявление const.

Ошибка на linha 3, карактер 32: Эта языковая функция поддерживается только для режима ECMASCRIPT6 или лучше: функция стрелки.

при добавлении этого тега фрагмента HTML

 <script>
    window.addEventListener("load", function () {
        const URLToArray = url => {
            var request = {};
            var pairs = url.substring(url.indexOf('?')   1).split('amp;');
            for (var i = 0; i < pairs.length; i  ) {
                if (!pairs[i])
                    continue;a
                var pair = pairs[i].split('=');
                request[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
            }
            return request;
        }
        $(document).on("submit", "form", function (ev) {
            var params = URLToArray(window.location.href)
            if (params) {
                $('<input>').attr({
                    type: 'hidden',
                    name: 'field[2]',
                    value: params['utm_source']
                }).appendTo($(this));

                $('<input>').attr({
                    type: 'hidden',
                    name: 'field[3]',
                    value: params['utm_medium']
                }).appendTo($(this));

                $('<input>').attr({
                    type: 'hidden',
                    name: 'field[4]',
                    value: params['utm_campaign']
                }).appendTo($(this));

        $('<input>').attr({
                    type: 'hidden',
                    name: 'field[5]',
                    value: params['utm_term']
                }).appendTo($(this));                   
                
                $('<input>').attr({
                    type: 'hidden',
                    name: 'field[6]',
                    value: params['utm_content']
                }).appendTo($(this));
                
            }
        })
    })
 

Ответ №1:

Это означает именно то, что говорится в сообщении об ошибке, а именно, что вы не можете использовать функции ES6, такие как ключевое слово const или функции стрелок в большинстве GTM (некоторые функции ES6 поддерживаются в пользовательских шаблонах, что здесь не поможет, поскольку шаблоны не могут манипулировать DOM для добавления поля формы и т. Д.).

Решение должно быть достаточно простым, если вы замените

 const URLToArray = url => { 
   // function body
}
 

с

 var URLToArray = function() {
   // function body
}
 

Выражение функции со стрелкой создает функцию с именем url, которая затем присваивается переменной (и это константа, что означает, что имя переменной нельзя переназначить).

Более традиционный подход присваивает анонимную функцию непосредственно переменной (и впоследствии ее можно случайно перезаписать).