У меня есть приложение для реагирования, которое мне нужно запустить внутри хост-приложения NextJS и запустить его самостоятельно.
В примере NextJS на https://github.com/module-federation/module-federation-examples/tree/master/nextjs-react есть примечания, что:
ПРИМЕЧАНИЕ. Если версия: «0» опущена, вы столкнетесь с проблемой, когда копия реакции будет загружена из удаленного входа.
ПРИМЕЧАНИЕ. Еще одна проблема, с которой вы можете столкнуться, — недопустимый вызов ловушки, если вы объединяете компонент, использующий реактивные ловушки. Это напрямую связано с одновременным выполнением нескольких копий реакции. Вышеупомянутое решает это.
Я настроил удаленное приложение с ModuleFederationPlugin:
shared: {
react: {
singleton: true,
requiredVersion: false,
version: "0"
},
"react-dom": {
singleton: true,
requiredVersion: false,
version: "0"
}
}
Это работает при работе внутри хоста NextJS. Но когда я запускаю свое федеративное приложение самостоятельно, я получаю TypeError: n.n(...)(...).createContext is not a function.
Если я удаляю версию: «0», тогда я получаю неверный вызов ловушки при запуске внутри хоста NextJS.
Можно ли справиться с обоими случаями или иметь запасной вариант на случай, если в общей области нет версии реакции?
Я обнаружил, что мне нужно добавить:
resolve: {
alias: {
react: path.resolve("./node_modules/react")
}
}