Apache Superset基于Module Federation实现微前端遇404问题求助
Apache Superset微前端接入:Module Federation输出文件404问题解决
问题描述
配置Webpack Module Federation将Apache Superset作为微前端导出,指定filename: 'entryFile.js',但启动服务后访问http://localhost:8088/entryFile.js返回404错误。相关Webpack配置如下:
const plugins = [ new ModuleFederationPlugin({ name: 'superset', library: { type: 'var', name: 'superset' }, filename: 'entryFile.js', exposes: { './App': addPreamble('/src/profile/App.tsx'), }, }), ]
解决方案
1. 对齐静态资源路径配置
Superset前端构建产物默认输出到superset-frontend/dist,且后端通过/static/前缀访问静态资源。需确保Webpack的output和Module Federation的publicPath与该规则匹配:
// 补充Webpack output配置 output: { path: path.resolve(__dirname, '../dist'), // 指向Superset默认的dist目录 publicPath: '/static/', // 匹配后端静态资源前缀 }, // 修正ModuleFederationPlugin配置 new ModuleFederationPlugin({ name: 'superset', library: { type: 'var', name: 'superset' }, filename: 'entryFile.js', exposes: { './App': addPreamble('/src/profile/App.tsx'), }, publicPath: '/static/', // 关键:统一静态资源访问前缀 }),
2. 重新构建前端并重启服务
Docker启动的Superset默认使用预构建代码,需重新构建并加载新产物:
- 进入
superset-frontend目录 - 执行
npm install安装依赖(若有新增依赖) - 执行
npm run build完成前端构建 - 重启Docker容器:
docker-compose restart superset_app
3. 验证构建产物与日志
- 检查
superset-frontend/dist目录下是否存在entryFile.js,若不存在,查看npm run build的控制台日志,排查编译错误或Module Federation插件执行异常。
4. 确认后端静态资源路由
确保Superset Flask后端未自定义拦截/static/路径的请求,默认配置下/static/会映射到superset-frontend/dist目录,若有自定义路由规则,需保证entryFile.js的请求能被正确转发到静态资源目录。
内容的提问来源于stack exchange,提问作者Flegcore
相关产品推荐
相关产品推荐

