Как вызвать window.onerror в angular?

#javascript #console #onerror

#javascript #консоль #onerror

Вопрос:

Я знаю, что есть много других сообщений на эту тему, но я все еще не могу заставить его работать. Я использую Angular 8 в своем проекте и хочу отправить сообщение консоли браузера в файл журнала сервера. Может кто-нибудь, пожалуйста, прояснить вопросы для меня:

  1. Когда запускается window.onerror? — правильно знаю, что я поместил функцию в конструктор, это нормально? Запускается ли он, если я обслуживаю проект локально?
   window.onerror = function (errorMsg, url, lineNumber) {
      alert(errorMsg   ' '   lineNumber);
    };
  
  1. Что мне нужно сделать, чтобы он сработал? (или, например, выдает ошибку из-за отсутствия сертификата — запускает эту функцию?)

console.error(‘test’) — вызывает ли это?

выбросить новую ошибку () — или это?

  1. Будут ли консольные ошибки, такие как CORS, запускать эту функцию?
  2. Я также читал, что это сработает, если img или источник скрипта недоступны.

app.compentent.html: <img src="test.png">

app.copmentent.ts в конструкторе (код первого пункта)

Но я все еще не получаю предупреждение для отображения.

Я благодарен за любую помощь — спасибо

Комментарии:

1. Документация

2. Спасибо — но я уже посещал этот сайт, но там у меня все еще есть вопросы. Не могли бы вы дать мне объяснение, где использовать эту функцию? (и почему я должен его использовать — в чем его польза?) @Jaromanda X

3. @angularQuestions посмотрите на developer.mozilla.org/en-US/docs/Web/API/Window/error_event для объяснения

Ответ №1:

Для вас может сработать следующее. Я использовал его в некоторых Vue.js код для проверки запуска window.onerror(). Использование eval() должно позволить вам обойти проверки Angular во время компиляции, а помещение его в window.onload() гарантирует, что он будет оценен после загрузки страницы.

 window.onerror = function (message, source, lineno, colno, error) {
  alert('onerror called: '   message);
}

window.onload = function () {
  eval('undefined_function()');
}  

В качестве меры безопасности не используйте eval() в рабочей среде, особенно если пользовательский ввод может приблизиться к нему.

Ответ №2:

Я пробовал запускать функцию ошибки с вашим кодом

 window.onerror = function (errorMsg, url, lineNumber) {
      alert(errorMsg   ' '   lineNumber);
    };


callingnonexistancefunction()  

Он запускается при вызове несуществующей функции.

Надеюсь, вы получите какую-нибудь ссылку

Комментарии:

1. Спасибо за ответ — но я все еще не могу заставить его работать. Потому что в Angular он не будет компилироваться, если функция не определена. @Diwakar Итак, есть ли другой способ протестировать функцию window.onerror?