У меня есть этот код на всех страницах моего сайта для отслеживания ошибок JavaScript
<script>
window.addEventListener('error', function(event) {
if (!window.XMLHttpRequest && !window.JSON) {
return;
}
if (!event.filename || !event.filename.includes("mywebsite.com")) {
// Exclude external scripts
return;
}
var httpRequest = new XMLHttpRequest();
httpRequest.open('POST', '/post-js-error', true);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify(event));
});
</script>
Второе утверждение if предназначено для исключения шума различных ошибок, не связанных с моим кодом (плагины браузера, которыелюди, внешние скрипты, которые я установил на своем веб-сайте и т. д.)
Вот что происходит: исключение работает довольно хорошо, за исключением одного случая.Я получаю ошибки от googlebots (пользовательский агент "Mozilla / 5.0 AppleWebKit / 537.36 (KHTML, как Gecko; совместимый; Googlebot / 2.1; + http://www.google.com/bot.html) Safari / 537.36"). Полученное имя файла является пустой строкой.ошибка не должна передавать условие if (! event.filename), но это так.
Почему это так?