2016-07-18 2 views
2

Я пытаюсь интегрировать Airbrake-js в мою установку dev, чтобы сообщать об ошибках JavaScript. Мое приложение - это приложение React, в котором используется веб-пакет.Настройка Airbrake-js с приложением ReactJS и веб-пакетом

Я уже несколько часов чищу веб-сайт, чтобы выяснить, как должна быть настройка. Я не был в состоянии точно определить в их documentation где их исходный код:

var airbrakeJs = require('airbrake-js'); 
var airbrake = new airbrakeJs({projectId: 1, projectKey: 'abc'}); 

фактически должны быть установлены. Мое мышление является то, что я хочу, чтобы мои существующие приложения, завернутые в их функции обруча (показывать только часть моего app.js файла для краткости):

var airbrakeJs = require('airbrake-js'), 
    React = require('react'), 
    ReactDOM = require('react-dom'), 
    Relay = require('react-relay'), 
    App = require('./components/app'), 
    Router = require ('react-router'), 
    Route = require Router.Route, 
    createBrowserHistory = require('history/lib/createBrowserHistory'); 

var startApp = function() { 
    // This will throw if the document has no head tag. 
    // ****What does this exactly do?**** 
    document.head.insertBefore(document.createElement("style")); 
} 
startApp = airbrake.wrap(myApp); 

// Any exceptions thrown in startApp will be reported to Airbrake. 
startApp(); 

ReactDOM.render((
    <Router history={createBrowserHistory()} createElement={ReactRouterRelay.createElement}> 
    <Route component={App} queries={AppQueries} {...renderProps}> 
     <Route path="/somewhere" component={Somewhere} queries={SomewhereQueries} /> 
    </Route> 
    </Router> 
), document.getElementById('academy-body')); 

Итак, я добавил это к моей точке входа app.js файла (где Я также обрабатываю логику Router), но он не называется там, поэтому я должен делать что-то неправильно. Я также точно не знаю, что именно делает вторая строка (прямо под первым комментарием).

Может ли кто-нибудь объяснить и помочь правильно настроить Airbrake? Действительно ли Airbrake-js собирается работать с приложением React?

Любая помощь в правильном направлении очень ценится!

ответ

1

Вы должны создать экземпляр AIRBRAKE с

window.airbrake = new airbrakeJs({projectId: 1, projectKey: 'abc'}); 
// replace projectId and projectKey with your project values 

поэтому сначала вы можете попробовать просто добавить, что существующий код. Обратите внимание, что мы используем глобальную область для доступа к экземпляру Airbrake из любой дочерней области. Обычно это не очень хорошая практика, но выглядит достаточно справедливо для целей Airbreake.

Эта линия

document.head.insertBefore(document.createElement("style")); 

это просто пример, используемый в документации, о чем-то, что может бросить ошибку. Вы можете удалить его из кода yout.

Это должно обернуть воздушный тормоз вокруг определенных функций.

startApp = airbrake.wrap(myApp); 

// Any exceptions thrown in startApp will be reported to Airbrake. 
startApp(); 

Вы можете удалить его из своего кода.

Вы можете использовать это для отладки ошибок, если на самом деле Воздушный тормоз отлова:

// Remove it for production or use an enviroment conditional 

airbrake.addReporter(function(notice) { 
    console.log(notice); 
}); 
+0

Работал как шарм! Благодаря! Это должно быть в официальной документации .... – alengel

Смежные вопросы