При попытке опубликовать новую версию GTM я получаю ошибки с переменными, которые я не редактировал (раньше они работали, а теперь показывают ошибки).
Error message:JavaScript Compiler Error Error at line 4, character 18: Cannot convert ECMASCRIPT_2018 feature "RegExp Lookbehind" to targeted output language.
Код:
function(){
var myRegexp = /(?<=(/.*/cat/)).*?(?=/)/g; //regex rule
var result = document.URL.match(myRegexp);
if (result !== null){
return result[0];
}else{
return null;
}
}@yunzen, поскольку это пост GTM, он говорит о Google Closure Compiler, который GTM использовал «за кулисами», когда готовил JS-файл, содержащий все теги и т. д.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Lookbehind — это довольно новая функция — ее поддерживают только некоторые браузеры, и ее нельзя точно транспилировать (насколько я видел), поэтому возникает ошибка. Используйте стандартное сопоставление вместо просмотра назад с группой захвата для части после cat/ и возвращайте первую группу захвата:
var pattern = //.*/cat/([^/]+)/;
var match = document.URL.match(pattern);
return match
? match[1]
: null;
Сообщение появляется в этом коде: github.com/google/close-compiler/blob/…
@FilipKapusta Недавно измененный код: github.com/google/close-compiler/commit/… Функция просмотра назад, возможно, работала раньше в современных браузерах, но я уверен, что она выдавала ошибки в старых браузерах, таких как IE. Теперь вместо того, чтобы кидать в IE, он кидает в процесс сборки, чтобы предложить вам исправить это раньше :)
Большое спасибо за помощь в понимании и решении данного вопроса!
Вы должны где-то использовать транспилятор JavaScript. Который?