Ошибка импорта компонентов из react-native-webrtc в React Native
При попытке импортировать компоненты из библиотеки react-native-webrtc возникает ошибка, связанная с некорректной регистрацией модуля или проблемами наследования классов.
Пример импорта, вызывающего ошибку:
import { RTCPeerConnection, RTCIceCandidate, RTCSessionDescription, RTCView, mediaDevices } from 'react-native-webrtc';Описание ошибки
В консоли отображаются следующие сообщения:
TypeError: Super expression must either be null or a function, js engine: hermesInvariant Violation: "main" has not been registered...
Предпринятые действия
Были выполнены следующие шаги для устранения проблемы, но они не привели к положительному результату:
- Переустановка библиотеки
- Пересборка проекта
- Перезапуск Metro bundler
Особенности ошибки
Проблема воспроизводится даже в чистом проекте, содержащем только эту библиотеку. Это указывает на то, что ошибка не связана с конфликтами зависимостей или настройками конкретного приложения. Вероятная причина - несовместимость библиотеки с используемой версией JavaScript-движка Hermes или неправильная конфигурация сборки.
Рекомендации по решению
- Проверьте совместимость версии
react-native-webrtcс версией React Native и движком Hermes в вашем проекте - Попробуйте временно отключить Hermes и использовать JavaScriptCore для тестирования:
hermes.enabled = falseв файлеmetro.config.js - Выполните полную очистку кэша Metro:
npx react-native start --reset-cache - Проверьте файл
package.jsonна наличие актуальной версии библиотеки - При необходимости рассмотрите альтернативные библиотеки для WebRTC в React Native