next.js - Nextjs 模块与独立服务器联合

标签 next.js webpack-module-federation

我正在尝试在 nextjs 应用程序之间使用模块联合(webpack 5)。
我从 this example 开始(两个 nextjs 应用程序),一切都按预期工作。从我的角度来看,问题是只有当我在同一主机上拥有两个应用程序时,这才有效。
next.config.js上的相关webpack配置部分在下面(在另一个应用程序中相同)

....
      remotes: {
        next1: isServer
          ? path.resolve(
              __dirname,
              "../next1/.next/server/static/runtime/remoteEntry.js"
            )
          : "next1",
      },
...
如果我只是删除服务器配置,它就不起作用。
是否可以在 nextjs 应用程序之间使用模块联合,而无需通过文件夹路径配置远程服务器并仅通过 url 引用远程应用程序?

最佳答案

这是可能的,但它不适用于 SSR。只需将 Remote 与全局客户端分开即可:

  // next.config.js
  ....
    remotes: {
      next1: "next1",
    },
  ...
创建您的组件并导入 Remote :
   // component.js
   const Component = (await import("next1/component")).default
   export default Component
最后在您的页面中,在禁用 SSR 的情况下延迟加载远程组件:
  // mypage.js
  import dynamic from 'next/dynamic'
    
  const RemoteComponent = dynamic(
    () => import('../components/component.js'),
    { ssr: false }
  )
    
  const MyPage = () => (<RemoteComponent />)
  export default MyPage
这里有一个工作示例:https://mf-shell.vercel.app/
和代码:https://github.com/schalela/mf-nextjs

关于next.js - Nextjs 模块与独立服务器联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66851070/

相关文章:

javascript - 如何自定义 Material UI 选项卡、选项卡滚动条

graphql - Next js - 无法使用 apollo 客户端 api 生成动态 getStaticPaths

webpack - 编辑联合模块时由 Webpack-Dev-Server 实时重新加载

Webpack 5 模块联合失败处理

javascript - 如何在不弹出的情况下使用带有 create-react-app 的 Webpack Module Federation 插件

next.js - nextjs - 页面样式最初未加载,导致巨大的图标和损坏的 CSS

reactjs - 无法读取 nextJs 中 razorpay 付款的 null 属性 'tagName'

css - next.js 使用现在缺少的样式部署,styles.css 404 响应

next.js - 模块联合或微前端在 Next js 版本 12.2.0 中不起作用

angular - 微前端 - 已创建具有不同配置的平台。请先销毁