Я пытаюсь реализовать React Context API в своем приложении Nextjs, используя ReasonReact, но меня улавливает способ вывода имен модулей компилятором bucklescript.
Чтобы сделать контекст доступным для всего дерева, мне нужно наследовать от компонента приложения Nextjs. Проблема в том, что Next по соглашению ищет pages/_app.js для наследования компонента приложения, но когда я использую _app.re для имени файла, bsb не создает модуль Reason с именем «Приложение».
На самом деле bsb выводит следующее сообщение и игнорирует файл:
IGNORED: file _app.re under pages is ignored because it can't be turned into a valid module name. The build system transforms a file name into a module name by upper-casing the first letter
Есть ли способ сказать Nextjs искать компонент приложения в другом месте? Или, возможно, способ настроить bsb только для этого одного файла?
Последнее кажется долгим, но я не хочу погружаться в javascript, если мне не нужно В самом деле.





Одним из возможных решений является добавление файла js с соответствующим именем, который реэкспортирует из скомпилированного модуля с именем, которое поддерживает BuckleScript:
// _app.js
export { default } from './next_app.bs.js';
Мне пришлось сделать это, чтобы некоторые функции работали с Гэтсби. См. этот пример.
Спасибо! Мы закончили тем, что использовали символическую ссылку для целей прототипирования, которая работает, но ваш подход чище для производственного использования. Мы столкнулись с необходимостью написать несколько довольно грубых привязок к слабо определенным параметрам для
getInitialProps. Также необходимо запускать иawaitфункцииgetInitialPropsподстраниц, что будет довольно сложно. Мы планируем больше писать компонент App и другой специфичный для Nextjs код на Javascript, сохраняя Reason для самих компонентов и страниц (которые, кажется, лучше работают с ReasonReact).