Не перехватываются ошибки window.onerror в Vue

Рейтинг: 1Ответов: 2Опубликовано: 27.02.2023

В index.html добавил перехватчик ошибок window.onerror который должен отправлять запрос на бэк с ошибкой для логирования. Если в консоли прописать ошибку н-р setTimeout(function() { notThere(); }, 0); он ее успешно перехватит.

введите сюда описание изображения

Однако ошибки н-р TypeError когда вызываем toString на null, window.onerror не срабатывает

введите сюда описание изображения

так же выявил зависимость когда перехватывает введите сюда описание изображения

не перехватывает

введите сюда описание изображения

Ответы

▲ 4Принят

Без кода сложно ориентироваться что конкретно у вас не так. Наверно вам нужно обработать данную ошибку со стороны экземпляров Vue

import Vue from 'vue';

Vue.config.errorHandler = (err, vm, info) => {
  //Vue.config.errorHandler фиксирует ошибки, характерные для экземпляров Vue
};

Для перехвата сторонних ошибок, которые возникают вне экземпляра Vue:

window.onerror = function(message, source, lineno, colno, error) {
  //some code
};

Ну и в версии 2.5.0 и выше есть хуки errorBoundaries и errorCaptured

▲ 1

ошибки н-р TypeError когда вызываем toString на null, window.onerror не срабатывает

Давай проверим... Все вроде срабатывает.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script>
window.addEventListener('error', e => {
    console.log('Ошибка - ', e.message)
})
</script>
</head>
<body>

<script>
const v = null
console.log(v.toString())

</script> 
</body>
</html>