Получение данных стека из объектов ошибок в React Native — Expo — CRNA

Я хотел бы иметь возможность получать данные стека (fileName и lineNumber) из объекта Error в React Native.
Если я запускаю что-то вроде этого:

const err = new Error('Message');
console.log(err);

Я получаю полезный вывод в своей консоли, например:

Message
* App.js:21:16 in componentDidMount
- node_modules\react-proxy\modules\createPrototypeProxy.js:61:45 in proxiedComponentDidMount
- node_modules\react-native\Libraries\Renderer\ReactNativeRenderer-dev.js:10627:12 in commitLifeCycles
- ... 23 more stack frames from framework internals

Я хотел бы иметь возможность отправлять эти данные стека в другое место для регистрации и исправления, но я не могу понять, как получить доступ к данным, которые показывают имя файла и строку, в которой возникла ошибка.
Как я могу получить эту информацию?
Согласно документации Ошибка - JavaScript MDN, если я попытаюсь:

console.log(err.fileName)

or:

console.log(err.lineNumber)

Я просто получаю:

undefined

Что подтверждается:

console.log(Object.keys(err));

в результате чего:

Array []

Хотя, загадочно:

console.log(err.message);

все еще возвращает:

Message

Связано - если я ввожу:

console.log(err.toString())

Я получил:

Error: Message

Точно так же, если я ввожу:

console.log('Comment', err);

Я получаю в качестве вывода:

Comment [Error: Message]

Поэтому, хотя я вижу, что данные стека есть, я, похоже, не могу получить к ним доступ или передать их куда-то еще.


person Sho Ya    schedule 10.08.2018    source источник


Ответы (1)


проверьте https://github.com/marchingband/expo-error-log. Вам потребуется зарегистрировать собственный обратный вызов обработчика ошибок. Вы можете использовать ErrorBoundary или фиксировать ошибки рядом других способов, некоторые из которых будут фиксировать все ошибки JS, а некоторые — нет.

person Marchingband    schedule 01.03.2020