Я пытаюсь интегрировать Instana в приложение. В частности, я пытаюсь отправить ошибки из моего приложения Angular в Инстану. Мой код «работает», так что это своего рода вопрос о наилучшей практике.
Документация Внутренней корреляции Instana определяет функции в "окне" из того, что я понимаю. Я установил что-то подобное в моем index.html.
<script>
(function(i,s,o,g,r,a,m){i['InstanaEumObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//eum.instana.io/eum.min.js','ineum');
ineum('apiKey', 'someKey');
ineum('traceId', 'backendTraceId'); //replace 'backendTraceId with the appropriate expression for retrieval
</script>
У меня возникает проблема, когда я пытаюсь следовать руководству Инстаны по Angular 2+ Integration относительно отслеживания ошибок, когда они вызывают один из методов, к которым я могу получить доступ из окна. Справочник прямо вызывает функцию ineum(...)
сама по себе. Когда я пытаюсь это сделать, мой проект не компилируется.
class CustomErrorHandler implements ErrorHandler {
handleError(error) {
ineum('reportError', error);
// Continue to log caught errors to the console
console.error(error);
}
}
Мое текущее исправление: (<any>window).ineum('reportError', errorContext);
Но я смотрел на другой вопрос переполнения стека , где они обращались к окну по-разному в своем javascript.
- Является ли окно ввода типа «любым» плохой практикой?
- Лучше попробовать
window['ineum'](...)
или это просто предпочтение синтаксиса?
- Лучше ли попытаться определить функции в другом файле, скажем, своего рода сервис Instana, а затем использовать этот сервис в сценарии index.html и CustomErrorHandler или оставить его в окне? (Хотя это может быть немного сложнее для меня, чтобы выяснить)
Извините за путаницу, так как это может быть не так, потому что мой код «работает», но я просто хочу пояснить это. Я не уверен, что просто не правильно следовал инструкциям Инстаны, но это было лучшее из того, что я смог найти. Я пытался связаться через их контактную страницу, но пока не получил ответа.