2014-01-27 5 views
6

Как вы устанавливаете Airbrake таким образом, чтобы он получал контекстную информацию из необработанных ошибок Javascript, которые встречаются в приложении Ember?Настройка Airbrake на приложении Ember

+0

Как вы установили воздушный тормоз? Я даже не могу «получить» javascript-файл после добавления < скрипт src = "airbrake-shim.js" data-airbrake-project-id = "FIXME" data-airbrake-project-key = "FIXME" data-airbrake-environment-name = "production"> в моей голове тег? – AnujKu

+0

Я использую Rails и использовал помощник Rails, который они показывают здесь - https://help.airbrake.io/kb/troubleshooting-2/javascript-notifier. Тем не менее, вы должны иметь возможность получить тот же результат, добавив JS что они показывают. –

+0

Для воздушного тормоза я не смог использовать вышеупомянутый пример, но мне пришлось вручную загрузить файл js из github и включить его в мой проект, чтобы он работал. – AnujKu

ответ

8

Предполагая, что вы включили 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 хранилище документации.

+0

Теперь я проверил это с членом команды Ember (Stef) - в настоящее время нет возможности обойти ошибки RSVP и обычные ошибки. Удачи!. –

+0

Спасибо! Да, я инициализирую с помощью помощника airbrake_javascript_notifier rails и использую Ember.onerror, но в основном получаю такие ошибки, как «ReferenceError: не могу найти переменную e», встречающуюся где-то в моем мини-JS, без какой-либо другой информации. Думал, что я увижу, есть ли что-то, что мне не хватает. Приятно знать о вторжении RSVP. –

1

Я не знаю, отвечает ли это на ваш вопрос, но я надеюсь, что это поможет.

Для обработки сервера брошена ошибки можно определить функцию «ошибки» в пути приложения и вставьте его в 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); 
    } 
}); 

Таким образом, у вас есть вся обработка ошибок в одном месте.