Задать вопрос
chuikoffru
@chuikoffru
Full Stack JS Developer

Как объединить два больших react приложения из разных реп?

Добрый день господа! Возник серьезный вопрос, над которым бьюсь четвертый день.
Есть два репозитория, один представляет из себя laravel + react (кастомный webpack), а другой чисто react (CRA).
Нужно добавить второе приложение в первое, как компонент (с возможностью просто обновлять компонент и продолжать вести разработку во второй репе).

Что уже было испробовано?
- Делал обычный git clone, но возникла проблема с относительными путями.
- Делал сборку через rollup, но в бандл не вошли некоторые компоненты, из-за динамического импорта
- Делал скомпилированную копию с помощью babel и публиковал npm пакет. Но при подключении, получаю ошибку:

Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.


Важно отметить что во втором приложении (https://github.com/chuikoffru/rrbe) используется ленивая загрузка с помощью loadable-component, относительные пути, и хуки.
npm run pack
npm run pack - делает бандл с помощью rollup
npm run pack-widget - делает клон es5 в dist
  • Вопрос задан
  • 1138 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
ну, варианта два:
- иметь два реакт-приложения на странице, инициализируя их в разных контейнерах
- приводить к одной архитектуре и структуре для начала.

второй подразумевает что надо переделать так чтобы сборка была одна на всех и использовались те же версии библиотек, как минимум реакта и всех "глобальных" вещей, типа роутинга, gql если есть и тп. все что имеет глобальный стейт или использует контекст реакта.
подключайте как исходный код - будет проще изменить то что нужно изменить, отдельный модуль вам не нужен

Естественно если вы хотите объединить приложения на уровне исходного кода то с большой вероятностью этот код и сборку придется переделывать либо в первом либо во втором.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Lynatik001
moleculer мб? обьеденяет разные приложения. даже если они на разных машинах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы