Не удается разрешить 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_modules
ReasonReact.js
файл, все работает.
Я просмотрел несколько уроков и статей. Может быть, я что-то пропустил, но я не могу найти ничего об ошибке, с которой я сталкиваюсь. Есть ли у кого-нибудь идеи о том, почему путь будет отключен в скомпилированном bs.js
файл?
1 ответ
Проблема в том, что вы назвали свой проект reason-react
, В сочетании с наличием namespace
включен, это создает модуль локального пространства имен с именем ReasonReact
который мешает разрешению модуля зависимости.
Вы могли бы это исправить, просто установив namespace
в false
в bsconfig.json
, поскольку это не похоже на то, что вы создаете библиотеку, которая будет использоваться другими и, следовательно, в любом случае не нуждается в пространстве имен. Но вам также следует избегать использования того же имени, что и у одной из ваших зависимостей, так как это легко вызывает такие запутанные проблемы.
Не забудьте изменить имя в обоих bsconfig.json
а также package.json
чтобы избежать проблем.