Проблемы с использованием "index.js" для импорта модулей ES6 JS - PullRequest
3 голосов
/ 08 мая 2019

Я работаю с React Native и использую index.js для управления модулями. У меня много проектов, использующих одну и ту же папку компонентов, которая имеет такую ​​структуру:

components
|_ComponentOne.js
|_ComponentTwo.js
|_index.js

В котором index.js выглядит следующим образом:

export * from './ComponentOne.js';
export * from './ComponentTwo.js';

Теперь допустим, у меня есть три проекта:

  • ProjectOne , который использует ComponentOne;
  • ProjectTwo , который использует ComponentTwo;
  • ProjectThree , который использует оба;

Каждый проект имеет свои собственные файлы, но они ссылаются на эту же папку, чтобы использовать компоненты (например, папку общих ресурсов). Все работает нормально, в то время как все проекты имеют все зависимости для всех компонентов.

Другими словами, у меня проблема, когда один из проектов не устанавливает зависимость для одного из компонентов, , даже если проект не использует этот компонент .

Давайте возьмем в качестве примера ProjectOne , который использует только ComponentOne . Если ComponentTwo (который не используется в этом проекте) имеет зависимость X, я должен npm установить зависимость X даже на ProjectOne , или выдается ошибка. Опять же, ProjectOne не использует зависимость X.

Я могу только представить, что это происходит, потому что index.js проверяет все объявленные экспорты, даже если они не используются.

Я пытаюсь найти альтернативу, чтобы не заставлять устанавливать плагины и другие вещи, которые я даже не буду использовать в своих проектах. Я знаю, что если я удалю index.js и начну импортировать файлы непосредственно в проекты, это будет работать, но я бы хотел сохранить структуру index.js (чтобы иметь возможность использовать синтаксис множественного импорта import { ComponentOne, ComponentTwo } from 'components').

Есть предложения?


Обновление:

Ошибка, которую я получаю, когда не npm установочной зависимости X равно

Module `X` does not exist in the Haste module map

Если я его установлю, все работает.

Я использую терминал для установки приложения прямо на телефон Android. Пакет JS автоматически создается Metro (по умолчанию RN).

...