Компилированные компоненты React в локальных узлах не работают при загрузке - «Ошибка: сбой инварианта: вы не должны использовать <Link>за пределами <Router>» - PullRequest
0 голосов
/ 24 октября 2019

У меня есть набор корпоративных приложений, которые я разрабатываю. Я выделил общие элементы управления в связанную библиотеку элементов управления (пакет узлов). Я сделал это зависимостью от других узловых пакетов, используя ссылку npm.

Основные проекты приложения создаются с использованием create-реагировать-приложение и использовать для сценария разработки и сборки.

Потому что реагирует-scripts не преобразует файлы вне папки src, мне пришлось использовать nwb для предварительной компиляции в ES5. Сначала все шло хорошо.

Однако, когда я переместил определенные компоненты, которые используют <Link> и <NavLink> из основных проектов в библиотеку, и я использую эти компоненты, я получаю эту ошибку:

«Ошибка: не удалось выполнить инвариант: не следует использовать <Link> вне <Router>»

Когда я перемещаю исходный файл для рассматриваемых компонентов обратно в основной проект, все работает нормально.

React-scripts не поддерживает компиляцию / преобразование чего-либо (jsx или tsx) вне папки src проекта create-Reaction-app.

Я пробовал два решения:

  1. Использование программных ссылок Windows , чтобы исходные файлы jsx и tsx отображались как часть структуры папок src. Это не работает, потому что между узлом, babel, веб-пакетом и реагирующими скриптами программные ссылки полностью разрешены. Я не знаю, как обойти это.
  2. Выполнение команды response-scripts eject , чтобы дать мне больше прямого контроля над процессом сборки. Я попытался обновить файл paths.js в скриптах, чтобы включить узел_модули // src как часть папок src. Если это не удалось, система сборки отказывается компилировать файлы как часть процесса сборки.

Прямо сейчас я растерялся и не знаю, как обойти это или какова реальная проблема. Почему предварительно скомпилированный компонент ES5 не просто работает в первую очередь?

...