Интеграция реактивной версии 0.62.2 в существующую ошибку приложения IOs - PullRequest
0 голосов
/ 30 апреля 2020

Следующий документ о реакции на исходный код для интеграции реагирующего с существующим приложением IOs. Структура каталога как интегрируемого документа:

android/
ios/
   Podfile
   #...other ios file
node_modules/
  react-native
  react
  @react-native-community  
package.json
.... 

, поэтому при запуске pod install из Podfile может вызываться функция use_native_modules

require_relative './libs/react-native-libs/node_modules/@react-native-community/cli-platform-ios/native_modules'
...
use_native_modules!

Но я хочу организовать проект по-другому, поскольку измените существующую структуру моего проекта,

, поэтому я добавляю модульact-native-integrate, как часть моего проекта IOs, как этот

my_ios_project
  Podfile
  libs/
     ... other modules
     react-native-integrate
         node_modules
             react-native
             @react-native-community
             react 
         package.json

И затем я изменяю путь относительного -module:

require_relative './libs/react-native-libs/node_modules/@react-native-community/cli-platform-ios/native_modules'
...
use_native_module!   

Но проблема в файлах native_modules, а другие библиотеки в node_modules используют абсолютные значения require. Например, в @react-community/cli-platform-ios/native_module.rb есть строка, такая как

cli_resolve_script = "try {console.log(require('@react-native-community/cli').bin);} catch (e) {console.log(require('@react-native/cli'))}"

, которая требует абсолютного пути '@ реагировать-нативное сообщество'. Так что, когда я запускаю Pod install мой файл pod из родительского каталога, node не может распознать мой дочерний модуль, так что это вызывает ошибку. enter image description here

Как я знаю, список spaths node_module в основном представляет собой список каталогов node_modules в каждом каталоге от текущего каталога до каталога root. А текущим каталогом является то, что каталогу подфайла, который вызывает, требуется 'native_module.rb'. Не могли бы вы дать мне решение этой проблемы, например, добавить путь к узлу из дочернего каталога или что-то еще? Спасибо.

1 Ответ

0 голосов
/ 11 мая 2020

Я нашел решение:

  • добавить пакет. json файл в root ios со свойством main
  • add реагировать-native.config. js в root ios проекте, измените путь к cli-platform-ios и cli-platform-android:
'use strict';

const ios = require('./node_modules/@react-native-community/cli-platform-ios');
const android = require('./node_modules/@react-native-community/cli-platform-android');

module.exports = {
  commands: [...ios.commands, ...android.commands],
  platforms: {
    ios: {
      linkConfig: ios.linkConfig,
      projectConfig: ios.projectConfig,
      dependencyConfig: ios.dependencyConfig,
    },
    android: {
      linkConfig: android.linkConfig,
      projectConfig: android.projectConfig,
      dependencyConfig: android.dependencyConfig,
    },
  }
};
  • Выполните pod install еще раз

Оформить заказ здесь: https://github.com/lehoangnam97/demo-intergrate-rn-on-ios

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...