Как вы устанавливаете Airbrake таким образом, чтобы он получал контекстную информацию из необработанных ошибок Javascript, которые встречаются в приложении Ember?Настройка Airbrake на приложении Ember
ответ
Предполагая, что вы включили Airbrake-js, вы можете подключить обработчик Ember's onerror
и нажать на ошибки.
Ember.onerror = function(err) { // any ember error
Airbrake.push(err);
//any other error handling
};
Ember.RSVP.configure('onerror',function(err){ // any promise error
Airbrake.push(err);
console.error(e.message);
console.error(e.stack);
//any other generic promise error handling
};
window.onerror = function(err){ // window general errors.
Airbrake.push(err);
//generic error handling that might not be Airbrake related.
};
Вы можете увидеть больше вариантов различных параметров данных, передаваемых в AIRBRAKE-JS GitHub хранилище документации.
Теперь я проверил это с членом команды Ember (Stef) - в настоящее время нет возможности обойти ошибки RSVP и обычные ошибки. Удачи!. –
Спасибо! Да, я инициализирую с помощью помощника airbrake_javascript_notifier rails и использую Ember.onerror, но в основном получаю такие ошибки, как «ReferenceError: не могу найти переменную e», встречающуюся где-то в моем мини-JS, без какой-либо другой информации. Думал, что я увижу, есть ли что-то, что мне не хватает. Приятно знать о вторжении RSVP. –
Я не знаю, отвечает ли это на ваш вопрос, но я надеюсь, что это поможет.
Для обработки сервера брошена ошибки можно определить функцию «ошибки» в пути приложения и вставьте его в AIRBRAKE:
App.ApplicationRoute = Ember.Route.extend({
actions: {
error: function(error) {
// handle the error
Airbreak.push(error)
}
}
});
Кроме того, если вы ловите ошибки где-то еще и имеет ту же обработку, вы можете сделайте миксин и пропустите ошибку:
App.ErrorHandlerMixin = Ember.Mixin.create({
handleError: function(error){
//make different stuff
Airbreak.push(error)
}
});
App.ApplicationRoute = Ember.Route.extend(App.ErrorHandlerMixin, {
actions: {
error: function(error, transition) {
this.handleError(error);
}
}
});
App.ApplicationController = Ember.ObjectController.extend((App.ErrorHandlerMixin, {
someFunction: function() {
this.handleError(randomError);
}
});
Таким образом, у вас есть вся обработка ошибок в одном месте.
Как вы установили воздушный тормоз? Я даже не могу «получить» javascript-файл после добавления < скрипт src = "airbrake-shim.js" data-airbrake-project-id = "FIXME" data-airbrake-project-key = "FIXME" data-airbrake-environment-name = "production"> в моей голове тег? – AnujKu
Я использую Rails и использовал помощник Rails, который они показывают здесь - https://help.airbrake.io/kb/troubleshooting-2/javascript-notifier. Тем не менее, вы должны иметь возможность получить тот же результат, добавив JS что они показывают. –
Для воздушного тормоза я не смог использовать вышеупомянутый пример, но мне пришлось вручную загрузить файл js из github и включить его в мой проект, чтобы он работал. – AnujKu