Как я могу предотвратить ответную нативную информацию об устройстве, вызывающую неоднозначность React на моей установке? - PullRequest
0 голосов
/ 10 октября 2018

У меня проблема с установкой react-native-device-info в существующий реактивный проект (созданный с использованием create-react-native-app и последующим извлечением)

Я запускаю:

yarn add react-native-device-info yarn install react-native link react-native-device-info cd ios && pod install & cd ..

pod install устанавливает RNDeviceInfo, но также React как зависимость?

Затем я запускаю yarn ios как обычно.

С MetroBundler происходит сбой:

`` `Это предупреждение вызвано объявлением @providesModule с одинаковым именем в двух разных файлах.Загрузка графа зависимостей, сделано.ошибка: пакетирование не удалось: неоднозначное разрешение: модуль /Users/thomasclarke/dev/mobile-notifications-native/index.js пытается запросить react-native, но есть несколько файлов, предоставляющих этот модуль.Вы можете удалить или исправить их:

  • /Users/thomasclarke/dev/mobile-notifications-native/ios/Pods/React/package.json
  • /Users/thomasclarke/dev/mobile-notifications-native/node_modules/react-native/package.json `` `

Я поднял сообщение об ошибке, как этоявно неприемлемое поведение, но могу ли я обойти это с моей настройкой?

1 Ответ

0 голосов
/ 12 октября 2018

Оказывается, вы можете ссылаться на реактив-нативный в ваших node_modules, что обеспечивает необходимую зависимость.Это не было сделано по умолчанию в существующем проекте, поэтому вот процесс:

1) Начните с «чистого» (например, без поведения react-native-device-info).Перебравшись перед этим, я также обнаружил, что должен очистить оба каталога node_modules и ios/Pods, чтобы очистить устаревший пакет React.

2) Обновите свой подфайл, чтобы связать его с React (вытакже нужно будет добавить в соответствующие подспецы и отдельный модуль для йоги)

Вот строки, которые нужно добавить в ваш подфайл: pod 'React', :path => '../node_modules/react-native', :subspecs => [ 'DevSupport', 'Core', 'RCTAnimation', 'RCTImage', 'RCTLinkingIOS', 'RCTSettings', 'RCTText' ] pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

3) Тогдазапустите react-native link react-native-device-info

Это добавит информацию о реагирующем устройстве в ваш Podfile (вместе с настройкой Android)

pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'

4) Установите все как обычно: yarn install cd ios pod install

И теперь у вас должна быть работающая сборка!

...