Экспорт / Вход в службу отслеживания ошибок
Есть ли способ получить экспорт состояния / действий магазина программно в Production, которые можно было бы импортировать обратно в инструменты разработки?
Например, я могу настроить промежуточное ПО для захвата текущего состояния и отправки его в нечто вроде (Trackjs,Sentry, Rollbar), но в нем отсутствуют все предыдущие состояния и действия.
Я хотел бы сделать снимок в том же формате, что и экспорт из Redux Dev Tools.
Пример экспорта из Dev Tools
{"monitorState":{},"actionsById":{"0":{"type":"PERFORM_ACTION","action":{"type":"@@INIT"},"timestamp":1471017239656},"1":{"type":"PERFORM_ACTION","action":{"type":"INCREMENT"},"timestamp":1471017242004}},"nextActionId":2,"stagedActionIds":[0,1],"skippedActionIds":[],"committedState":5,"currentStateIndex":1,"computedStates":[{"state":5},{"state":6}]}
2 ответа
В данный момент он находится в разработке, но теперь вы можете добавить историю действий прямо в расширение, см. https://github.com/zalmoxisus/remotedev-server/pull/20
Другой вариант - сохранить действия в файл JSON в виде массива и импортировать их обратно.
Это возможно с https://github.com/zalmoxisus/redux-devtools-extension/issues/173
logger.js
let actions = []
export function logActions (stateSanitizer) {
return store => next => action => {
actions.push(action)
return next(action)
}
}
Эти действия могут быть сохранены в файл или базу данных и могут быть импортированы обратно в инструменты разработчика.
Примеры действий
[{
"type": "INCREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}, {
"type": "DECREMENT"
}]
Я создал этот репозиторий, который демонстрирует это в действии. https://github.com/timarney/redux-trackjs-logger он использует промежуточное ПО для регистрации действий при возникновении ошибки.
Я поддерживаю промежуточное ПО Redux под названием Raven for Redux, которое присоединяет данные Redux к отчетам об ошибках Sentry. В настоящее время он добавляет следующий контекст к каждому отчету об ошибках:
- Законченный государственный объект.
- Завершите последний объект действия.
type
всех действий, которые приводят к текущему состоянию. Они добавляются как "панировочные сухари".
Блог Sentry содержит описание, описывающее его более подробно: https://blog.sentry.io/2016/08/24/redux-middleware-error-logging.html
Вы можете найти промежуточное ПО в качестве пакета NPM здесь: https://github.com/captbaritone/raven-for-redux