Отладка¶
Доступ к меню Dev¶
React Native предоставляет меню разработчика внутри приложения, которое предлагает несколько вариантов отладки. Меню разработчика можно открыть, встряхнув устройство или с помощью сочетаний клавиш:
- iOS Simulator: Cmd+D (или Device → Shake)
- Android emulators: Cmd+M (macOS) или Ctrl+M (Windows и Linux)
В качестве альтернативы для устройств и эмуляторов Android вы можете выполнить команду adb shell input keyevent 82
в терминале.
Примечание
Меню Dev Menu отключено в релизных (производственных) сборках.
LogBox¶
Ошибки и предупреждения в сборках разработки отображаются в LogBox внутри вашего приложения.
Примечание
LogBox отключен в релизных (производственных) сборках.
Ошибки и предупреждения консоли¶
Ошибки и предупреждения консоли отображаются в виде экранных уведомлений с красным или желтым значком и количеством ошибок или предупреждений в консоли соответственно. Чтобы просмотреть ошибку или предупреждение консоли, коснитесь уведомления, чтобы просмотреть информацию о журнале на полном экране и просмотреть все журналы в консоли постранично.
Эти уведомления можно скрыть с помощью LogBox.ignoreAllLogs()
. Это полезно, например, при демонстрации продукта. Кроме того, уведомления могут быть скрыты для каждого журнала с помощью LogBox.ignoreLogs()
. Это полезно, когда есть шумное предупреждение, которое невозможно исправить, например, в зависимости от стороннего производителя.
Игнорировать журналы в крайнем случае и создать задачу для исправления всех игнорируемых журналов.
1 2 3 4 5 6 7 |
|
Необработанные ошибки¶
Не обработанные ошибки JavaScript, такие как undefined не является функцией
, автоматически откроют на весь экран LogBox с источником ошибки. Эти ошибки можно удалить и минимизировать, чтобы вы могли видеть состояние вашего приложения при возникновении этих ошибок, но их всегда следует устранять.
Ошибки синтаксиса¶
При возникновении синтаксической ошибки автоматически открывается полноэкранный LogBox ошибки с трассировкой стека и местоположением синтаксической ошибки. Эта ошибка не может быть устранена, поскольку она представляет собой некорректное выполнение JavaScript, которое необходимо исправить, прежде чем продолжать работу с приложением. Чтобы устранить эти ошибки, исправьте синтаксическую ошибку и либо сохраните ее для автоматического устранения (при включенном Fast Refresh), либо Cmd / Ctrl+R для перезагрузки (при отключенном Fast Refresh).
Инструменты разработчика Chrome¶
Чтобы отладить код JavaScript в Chrome, выберите "Open Debugger" в меню Dev. Это откроет новую вкладку по адресу http://localhost:8081/debugger-ui.
Отсюда выберите More Tools → Developer Tools
в меню Chrome, чтобы открыть Chrome DevTools. Также вы можете воспользоваться сочетанием клавиш Option+Cmd+I (macOS) / Ctrl+Shift+I (Windows и Linux).
- Если вы новичок в Chrome DevTools, рекомендуем изучить вкладки Console и Sources в документации.
- Возможно, вам захочется включить Pause on Caught Exceptions для улучшения отладки.
Расширение React Developer Tools Chrome не работает с React Native, но вы можете использовать его автономную версию вместо этого. Прочитайте этот раздел, чтобы узнать, как это сделать.
Примечание
На Android, если время между отладчиком и устройством изменилось, такие вещи, как анимация и поведение событий, могут работать неправильно. Это можно исправить, выполнив adb shell "date 'date +%m%d%H%M%Y.%S%3N'"
. При использовании физического устройства требуется Root-доступ.
Отладка на физическом устройстве¶
Если вы используете Expo CLI, это уже настроено для вас.
На устройствах iOS откройте файл RCTWebSocketExecutor.mm
и измените "localhost" на IP-адрес вашего компьютера, затем выберите "Debug JS Remotely" в меню Dev.
На устройствах Android 5.0+, подключенных через USB, вы можете использовать инструмент командной строки adb
для настройки перенаправления портов с устройства на компьютер:
1 |
|
В качестве альтернативы выберите "Settings" в меню Dev, затем обновите настройку "Debug server host for device", чтобы она соответствовала IP-адресу вашего компьютера.
На устройствах iOS откройте файл RCTWebSocketExecutor.mm
и измените "localhost" на IP-адрес вашего компьютера, затем выберите "Debug JS Remotely" в меню Dev.
Примечание
Если у вас возникли проблемы, возможно, одно из ваших расширений Chrome взаимодействует с отладчиком неожиданным образом. Попробуйте отключить все расширения и снова включить их по одному, пока не найдете проблемное расширение.
Дополнительно: Отладка с помощью пользовательского отладчика JavaScript
Чтобы использовать пользовательский отладчик JavaScript вместо Chrome Developer Tools, установите переменную окружения REACT_DEBUGGER
в команду, которая запустит ваш пользовательский отладчик. Затем вы можете выбрать "Открыть отладчик" в меню Dev, чтобы начать отладку.
Отладчик получит список всех корней проекта, разделенных пробелом. Например, если вы установите REACT_DEBUGGER="node /path/to/launchDebugger.js --port 2345 --type ReactNative"
, то команда node /path/to/launchDebugger.js --port 2345 --type ReactNative /path/to/reactNative/app
будет использована для запуска вашего отладчика.
Пользовательские команды отладчика, выполняемые таким образом, должны быть кратковременными процессами, и они не должны производить более 200 килобайт вывода.
Инструменты разработчика Safari¶
Вы можете использовать Safari для отладки iOS-версии вашего приложения без необходимости включать "Debug JS Remotely".
- На физическом устройстве перейдите в:
Настройки → Safari → Дополнительно → Убедитесь, что "Веб-инспектор" включен
(Этот шаг не требуется на симуляторе). - На вашем Mac включите меню Develop в Safari:
Настройки... (или Preferences...) → Дополнительно → Выберите "Show Develop menu in menu bar"
. - Выберите JSContext вашего приложения:
Develop → Simulator (или другое устройство) → JSContext
. - Должен открыться веб-инспектор Safari с консолью и отладчиком.
Хотя карты источников могут быть не включены по умолчанию, вы можете следовать этому руководству или видео, чтобы включить их и установить точки останова в нужных местах исходного кода.
Однако при каждой перезагрузке приложения (с помощью живой перезагрузки или вручную) создается новый JSContext. Выбор "Автоматически показывать веб-инспекторы для JSContexts" избавляет вас от необходимости выбирать последний JSContext вручную.
Монитор производительности¶
Вы можете включить наложение производительности, чтобы помочь вам отладить проблемы производительности, выбрав "Perf Monitor" в меню Dev.