webrepack flatrepo (гибридный монорепо) не может найти модуль: инвариант «Инвариант» не влияет - PullRequest
0 голосов
/ 06 мая 2019

Я наткнулся на странную проблему, которая, как я предполагаю, является проблемой компиляции веб-пакетов или вавилонов.Это сложно объяснить, поэтому терпите меня.

Небольшой фон

Мы работаем с гибридом моно-репо, который мы называем плоским репогде он разделяет один файл package.json и использует относительные пути для импорта.Причина, по которой мы не используем рабочие пространства Lerna или Yarn, заключается в том, что поток не очень хорошо работает с моно-репо без необходимости переноса каталогов, и это было преградой на тот момент.Но я отвлекся, в этом репо используются реагирующие / электронные и реактивные нативы для создания наших приложений.

Структура папок

project
--apps
----mobile // react native
----web // react/electron
--packages
----foo // generic shared code
----bar
package.json

Каждый раз, когда запускается электронное приложение, оно запускается с перерывами.Иногда это работает так, как ожидалось, но если файл package.json когда-либо будет настроен, он может сломать все, что приведет к следующей ошибке.

Module not found: Can't resolve 'invariant' in '/Users/foo/localhost/project/node_modules/react-redux/es/components'

Установка инварианта ничего не делает.Переустановка или замена ответной библиотеки и соответствующих библиотек на разные версии ничего не делают.

Я нашел странный обходной путь, который заключается в том, что если у меня запущен dev-сервер и я изменю package.json с помощью yarn add foo в другом терминале, он иногда сам "сбрасывается" и успешно компилируется.

Моя конфигурация веб-пакета - это общая версия извлеченной конфигурации CRA.

Хотя я не считаю, что это проблема конфигурации, потому что иногда она будет компилироваться точно и работать.Я в растерянности, и Google, кажется, не может многое предложить по этому вопросу.Попытка построить проект также вызывает ту же ошибку.

Спасибо всем, кто читает это, я ценю любую помощь, которую вы можете предложить.

Хорошего дня!

1 Ответ

0 голосов
/ 06 мая 2019

Все еще не уверен, в чем корень проблемы. Но чтобы это исправить, я скачал новый CRA и извлек его, скопировал пользовательский код monorepo и настроил некоторые вещи, предназначенные для monorepo, в первую очередь файл paths.js из ejection. Также взял все пакеты CRA и объединил их в package.json. Немного окольный способ сделать это, но теперь все хорошо, он работает и успешно строится.

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