You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 14用Webpack构建微前端遇Compilation类型错误求助

解决Next.js 14中Module Federation启动报错问题

错误原因

直接使用webpack原生的ModuleFederationPlugin会和Next.js内部封装的webpack版本产生实例冲突,导致Compilation类型不匹配的错误。Next.js对webpack做了定制化封装,不能直接挂载原生插件。

解决方案

使用官方推荐的Module Federation适配包@module-federation/nextjs-mf来配置:

1. 安装依赖

npm install @module-federation/nextjs-mf
# 或使用yarn
yarn add @module-federation/nextjs-mf
# 或pnpm
pnpm add @module-federation/nextjs-mf

2. 修改next.config.mjs配置

替换原有的webpack配置逻辑,使用适配包提供的工具:

import { withModuleFederation } from '@module-federation/nextjs-mf';

export default withModuleFederation({
  name: 'remoteApp',
  filename: 'static/remoteEntry.js',
  exposes: {
    './Button': './pages/components/Button',
    // 按需添加更多需要暴露的组件
  },
  shared: {
    react: { singleton: true, eager: true },
    'react-dom': { singleton: true, eager: true },
  },
});

3. 补充入口文件配置(Pages Router场景)

在pages/_app.js或pages/_app.tsx的顶部添加如下代码,确保远程模块能正确加载:

import '@module-federation/nextjs-mf/src/include-defaults';

4. 验证启动

重新执行next dev,项目即可正常启动。

额外注意事项

  • 若暴露的组件是客户端组件,需在组件文件顶部添加'use client'指令,避免SSR相关问题。
  • 若使用App Router,需在app/layout.js中添加上述的include-defaults导入,并将暴露组件的路径调整为app/components/Button格式。

内容的提问来源于stack exchange,提问作者Ankit Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:02:18