Приложение React-native / iOS: модуль SquareInAppPaymentsSDK не найден, хотя он был добавлен в проект - PullRequest
4 голосов
/ 07 мая 2020

Для получения дополнительной информации

Суммируя проблему

  • Проблема, с которой я столкнулся, заключается в том, что я настроил пакет response-native ( response-native-square-in-app-payments ) в Xcode, но я получаю сообщение об ошибке «модуль xxx не найден».

Возникает вопрос:

  • Почему Xcode не находит «отсутствующий» модуль? Что настроено неправильно? Где мне искать, чтобы проверить?

Ошибка следующая

Module 'SquareInAppPaymentsSDK' not found

enter image description here

Мой подфайл:

platform :ios, '11.0'

target 'myproject' do
  use_frameworks!

  pod 'React', :path => '../node_modules/react-native'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'RNSquareInAppPayments', :path => '../node_modules/react-native-square-in-app-payments'

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      if target.name == 'React'
        target.remove_from_project
      end
    end
  end

end

Мой файл project.pbxproj (не удалось прикрепить его сюда, но вы можете получить к нему доступ через github):

https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment -625333601

Обновление: Связывание (после 1-го комментария и ответа @DenisTsoi) ниже

Я пробовал автоматическое c связывание (как уже отмечалось, оно мне нужно, так как я использую RN 0.59.9 ), а затем я начал снова и попытался выполнить ручное связывание, поскольку у меня обоих одна и та же ошибка. Вы можете увидеть мои комментарии по этому поводу в https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment -625330210

Кстати, в разделе «Связать двоичный файл с библиотеками» у меня есть две записи пакета:

Комментарий к ответу @MuhammadNuman ниже:

Я попробовал ваш подфайл в новом проекте, поддерживающем реакцию (созданном с помощью response-init). Когда я добавляю

import { SQIPCore } from 'react-native-square-in-app-payments';

, я получаю ошибку, описанную в https://github.com/square/in-app-payments-react-native-plugin/issues/66#issuecomment -629762613

Вы можете найти мое репо в https://github.com/rahamin1/square_with-podfile

Ответы [ 3 ]

3 голосов
/ 14 мая 2020

Я уже сталкивался с подобными ошибками в прошлом. Поскольку некоторые элементы конфигурации отсутствовали или были повреждены, что приводит к такого рода проблемам. Поэтому я предлагаю вам создать новый проект, ориентированный на реакцию, и установить всю библиотеку в пакете. json одну за другой из NPM или документа GitHub этой библиотеки. а затем скопируйте код из sr c (React Code) в новый проект. Если у вас есть какие-либо изменения внутри папок ios и android, то только скопируйте изменения из файла и вставьте в файл нового проекта папку android / ios. (Если ничего не работает, примените это решение. У меня всегда работает)

2 голосов
/ 10 мая 2020

Согласно вашей ссылке на проблему на github,

Вы запускаете реакцию 0.59.x. Это означает, что вам потребуется запустить

react-native link

, чтобы нативные библиотеки были связаны в iOS XCode.

Альтернативный метод - связывание зависимости в XCode, который можно найти в собственном коде реакции docs

Excerpt

Step 1 If библиотека имеет собственный код, внутри ее папки должен быть файл .xcodeproj. Перетащите этот файл в свой проект в Xcode (обычно в группе «Библиотеки» в Xcode);

step 1

Шаг 2 Нажмите ваш основной файл проекта (тот, который представляет .xcodeproj) выберите Build Phases и перетащите библиотеку stati c из папки Products внутри библиотеки, которую вы импортируете, в Link Binary With Libraries

step 2

Шаг 3 Не каждой библиотеке потребуется этот шаг, вам нужно принять во внимание следующее: нужно ли мне знать содержимое библиотеки во время компиляции? Это означает, что вы используете эту библиотеку на собственной стороне или только в JavaScript? Если вы используете его только в JavaScript, вам хорошо go! Если вам действительно нужно вызвать его из нативного языка, нам нужно знать заголовки библиотеки. Для этого вам нужно go в файл вашего проекта, выбрать «Настройки сборки» и выполнить поиск путей поиска заголовков. Там вы должны указать путь к вашей библиотеке. (В этой документации ранее рекомендовалось использовать рекурсивный метод, но это больше не рекомендуется, поскольку это может вызвать незначительные сбои сборки, особенно с CocoaPods.) 

step 3

Для RN ​​0.60+ связывание выполняется автоматически.

Редактировать:

Вы также можете установить SDK с cocoapods через команду в каталоге <YOUR_PROJECT_DIRECTORY>/ios

pod install
1 голос
/ 16 мая 2020

Вы также можете клонировать и протестировать шаблон для react-native 0.59.9

https://github.com/nomi9995/in-app-payments-0.59.9.git

изменить свой подфайл

platform :ios, '11.1'

target 'myproject' do
  use_frameworks!

  rn_path = '../node_modules/react-native'
  pod 'React', path: rn_path, subspecs: [
  'CxxBridge',
  'RCTText',
  'RCTNetwork',
  'RCTWebSocket',
  'RCTAnimation',
  'RCTActionSheet',
  'RCTGeolocation',
  'RCTImage',
  'RCTSettings',
  'RCTVibration',
  'RCTLinkingIOS'
  ]
  pod 'yoga', :path => "#{rn_path}/ReactCommon/yoga"
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'RNSquareInAppPayments', :path => '../node_modules/react-native-square-in-app-payments'


end

и заново установить подфайл

pod install
...