Можно ли сделать экспортируемую конфигурацию Bugsnag? - PullRequest
0 голосов
/ 06 мая 2020

Погуглил и прочитал документацию, и я не видел случая, чтобы кто-то делал экспортируемую конфигурацию. Мой вариант использования состоит в том, что у меня есть две разные границы ошибок, которые я определяю в своем приложении, и я хочу заключить их в границу ошибки bugsnag. Чтобы выполнить sh это, мне нужно сделать следующее:

UIErrorBoundary1.jsx

import React from 'react';
import Bugsnag from '@bugsnag/js';
import BugsnagPluginReact from '@bugsnag/plugin-react';

const bugsnagConfigOptions = {
  apiKey: '...',
  plugins: [new BugsnagPluginReact(React)],
  ...,
};
configOptions.user = {
  ...
};

Bugsnag.start(bugsnagConfigOptions);
const BugsnagErrorBoundary = Bugsnag.getPlugin('react');

class UIErrorBoundary1 extends React.Component {
  render() {
    <BugsnagErrorBoundary>
      ...
    </BugsnagErrorBoundary>
  }
}

UIErrorBoundary2.jsx

import React from 'react';
import Bugsnag from '@bugsnag/js';
import BugsnagPluginReact from '@bugsnag/plugin-react';

const bugsnagConfigOptions = {
  apiKey: '...',
  plugins: [new BugsnagPluginReact(React)],
  ...,
};
configOptions.user = {
  ...
};

Bugsnag.start(bugsnagConfigOptions);
const BugsnagErrorBoundary = Bugsnag.getPlugin('react');

class UIErrorBoundary2 extends React.Component {
  render() {
    <BugsnagErrorBoundary>
      ...
    </BugsnagErrorBoundary>
  }
}

Что я хотел бы сделать выглядит примерно так:

bugsnagsetup. js

import React from 'react';
import Bugsnag from '@bugsnag/js';
import BugsnagPluginReact from '@bugsnag/plugin-react';

const bugsnagConfigOptions = {
  apiKey: '...',
  plugins: [new BugsnagPluginReact(React)],
  ...,
};
configOptions.user = {
  ...
};

export const Bugsnag = Bugsnag.start(bugsnagConfigOptions);
export const BugsnagErrorBoundary = Bugsnag.getPlugin('react');

UIErrorBoundary1.jsx

import React from 'react';
import { BugsnagErrorBoundary } from 'bugsnagsetup';

class UIErrorBoundary1 extends React.Component {
  render() {
    <BugsnagErrorBoundary>
      ...
    </BugsnagErrorBoundary>
  }
}

UIErrorBoundary2.jsx

import React from 'react';
import { BugsnagErrorBoundary } from 'bugsnagsetup';

class UIErrorBoundary2 extends React.Component {
  render() {
    <BugsnagErrorBoundary>
      ...
    </BugsnagErrorBoundary>
  }
}

Это уменьшит дублирование кода и, возможно, предотвратит определение нескольких экземпляров Bugsnag (которые я не тестировал, но я надеюсь, что это не приведет к отправке нескольких ошибок Bugsnag, если bugsnag запущен в нескольких разных файлах).

Возможно ли это?

...