Не могу побороть перехват ошибок. Казалось бы тривиальная задача, но тем не менее вот споткнулся.
Подключаю внешний скрипт с таким содержанием:
window.onerror = function (message, filename, lineno, colno, error) {
console.log("This is a stack trace! Wow! --> %s", error.stack);
return false;
};
Подключаю сразу после открывающегося тега
<head>
:
<script src="/build/setup-error-handler.js?v1"></script>
На странице ниже подключается скрипт:
$(function(){
// ...
});
А jQuery не подключается и я в консоли вижу ошибку:
script.js:1 Uncaught ReferenceError: $ is not defined
А вот мой обработчик в самом верху не работает.
Как так?
Если в консоли выполнить код:
const script = document.createElement('script');
script.textContent = `
setTimeout(() => {
throw new Error('Test reportError function')
}, 1000)`;
document.body.appendChild(script);
Тогда обработчик вызывается.