Не удается разрешить ReasonReact.js в веб-пакете

Я пытаюсь заставить ReasonML работать с существующей базой кода React. Я не пользуюсь create-react-app, Это hand-built проект. По большей части, похоже, все настроено нормально. Тем не менее, я получаю сообщение об ошибке при попытке запустить Webpack со скомпилированным по умолчанию bs.js файлы.

Error: Can't resolve '../lib/js/src/ReasonReact.js'

мой bsconfig.js почти напрямую копируется / вставляется из документов ReasonML:

{
  "name": "reason-react",
  "reason": {"react-jsx" : 2},
  "sources": ["src"],
  "package-specs": [{
    "module": "commonjs",
    "in-source": true
  }],
  "suffix": ".bs.js",
  "namespace": true,
  "bs-dependencies": ["reason-react"],
  "refmt": 3
}

Bucklescript генерирует соответствующий bs.js файлы в том месте, где я бы их ожидал. Все хорошо. Однако я не удивлен, что Webpack не может найти то, что ищет. Здесь нет /lib/js/src/ReasonReact.js файл. Есть ReasonReact.js файл в /lib/bsи один в node_modules/reason-react/lib/js,

Когда я редактирую скомпилированные файлы ReasonML и указываю переменную ReasonReact на node_modulesReasonReact.js файл, все работает.

Я просмотрел несколько уроков и статей. Может быть, я что-то пропустил, но я не могу найти ничего об ошибке, с которой я сталкиваюсь. Есть ли у кого-нибудь идеи о том, почему путь будет отключен в скомпилированном bs.js файл?

1 ответ

Решение

Проблема в том, что вы назвали свой проект reason-react, В сочетании с наличием namespace включен, это создает модуль локального пространства имен с именем ReasonReact который мешает разрешению модуля зависимости.

Вы могли бы это исправить, просто установив namespace в false в bsconfig.json, поскольку это не похоже на то, что вы создаете библиотеку, которая будет использоваться другими и, следовательно, в любом случае не нуждается в пространстве имен. Но вам также следует избегать использования того же имени, что и у одной из ваших зависимостей, так как это легко вызывает такие запутанные проблемы.

Не забудьте изменить имя в обоих bsconfig.json а также package.json чтобы избежать проблем.

Другие вопросы по тегам