Comments (8)
你说的对,我在 mf v1.5 的时候就尝试了,目前有两个问题阻碍 umi 4 使用 mf v2 :
1、umi 4 是预打包了很多依赖,包括 webpack ,而 mf v2 插件内部使用了大量 webpack 的导入,这不受支持。
2、我在源码里调试发现,貌似即使 1 问题解决了,还是打包出来空的 module ,我还没仔细研究为什么。
要解决 2 必须先解决 1 ,解决方案我的想法是新增一个环境变量允许使用自己的 webpack (因为 Nextjs 也预打包了 webpack ,使用 mf v2 就需要使用一个环境变量来跳过内置的,从而使用自己的 webpack),更多信息见 #12358 (comment) 。
解决问题 2 还没有眉目,如有兴趣可以研究问题 2 是为什么导致的,可以先使用 pnpm patch package 或者 pach package 包将 umi 依赖的 @umijs/bundler-webpack
这个包的入口 dist/index.js
中的如下一行注释掉:
import './requireHook';
之后再在项目里安装 webpack 就可以解决 1 了。
之后关闭 mfsu: false
排除干扰,且不要使用 esbuild 压缩器(配置 jsMinifier
为 terser ,这是因为 esbuild 压缩会多一层 iife 的自执行函数壳子导致 remote js 里的变量没法暴露出来,当然也可以配 library type 为 window 想办法绕过它),然后添加 exposes 之后打包,之前我尝试的时候,发现产物里没法成功打包 expose 的内容,显示为 Module not found ,通过配置 COMPRESS=none umi build
来不压缩查看产物。
至于为什么 module not found ,我还没进一步研究,这可能和 mf v2 插件有关,或者 umi 的某些 webpack 配置有关,如有兴趣,可以进一步研究,在此帖子跟进、反馈、交流。
如果问题 2 module not found 问题解决了,我会尽量推进问题 1 解决的进行。
from umi.
看起来是@umijs/bundler-webpack
中使用了内置的webpack
问题,我更改了@umijs/bundler-webpack
中的源码,让他支持使用外部的webpack,link到本地项目中使用,解决了Module Not Found
的问题,不过这也仅解决了pnpm build
能产生正确的产物,dev阶段的webpack-dev-middleware也依赖了内部的webpack,这个就有点难解决了。
from umi.
对,我这也是。上个月modulefederation 2.0版本发布了,umi不支持,相同报错。
附上仓库地址:https://github.com/lisleyang/umi-mf2-issue
from umi.
这是一个可运行demo,同时希望能暴露一下react-refresh的option配置,通过更改libraryName可以实现热更。
https://github.com/wenghongtian/umi-federation
@fz6m
from umi.
感谢你提供的例子,但最近我非常忙,不会马上处理需要花时间的开源 issue ,周末有空再弄下。
from umi.
你提到的 react refresh 选项是用来做什么的,和 mf 的热更新有什么关系吗,我在 mf 的文档中没找到。
from umi.
开发环境中,同时开发本地模块和远程模块时都使用了react-refresh-webpack-plugin,远程模块需要修改option中的library才能热更生效
new ReactRefreshWebpackPlugin({
library: pkg.name,
}),
from umi.
这个地方可以通过 webpack chain 来改,文档详见:webpack-chain > Config plugins: modify arguments
位置在:
if (useFastRefresh) {
config
.plugin('fastRefresh')
.after('hmr')
.use(FastRefreshPlugin, [{ overlay: false }]);
}
另外我看 react refresh webpack plugin 的文档,他会 fallback 取 output.uniqueName
,所以你设定这个也行。
关于 webpack mf v2 的 PR ,虽然有了,但改动比较多,最近没人 care 这个事情,这个 issue 也没什么人参与,可能短期不会合入发布。
from umi.
Related Issues (20)
- 1.import { history, request } from 'umi'; HOT 3
- umi4.x 配置base之后,history.push 跳转相对路径不生效 HOT 2
- 从v3升级到v4 No matching export in "src/.umi/exports.ts" for import "useModel" HOT 4
- [Feature Request] biomejs support HOT 1
- [Bug] openapi生成的services中的数据类型 HOT 1
- [Bug] useModel 怎么关闭隐式调用 HOT 2
- [Bug] useModel 怎么关闭隐式调用 HOT 2
- 可以打包两个html文件html文件对应的路由不一样在哪配置呢? HOT 2
- [Bug] model 插件和 antd 改变主题互相冲突 HOT 2
- useModel在login之前就执行了,导致没有拿到models的结果,登录后也不会再次执行 HOT 1
- [Bug] Proxy can't support WebSocket and make umi crashed HOT 2
- [Bug] umijs4版本左侧菜单折叠后再打开 submenu动画有残影 HOT 1
- umijs 怎么打包配置多个页面呢? HOT 1
- [Bug] umi^4.2.5怎么把id="app" 自定义其他名称,比如叫id="app1" HOT 2
- [Feature] 优先使用用户安装的 `babel-plugin-react-compiler` HOT 1
- [Task] PR #12398 代码修复 HOT 1
- [Feature Request] 支持 qiankun 多实例的保活 HOT 3
- umi 官方文档 ->blog(博客)->Umi 4 RC ->《比 Vite 更快的 MFSU》 文档出现问题 HOT 1
- 使用umimax时,使用了装饰器的代码无法被esbuild编译 HOT 2
- [Bug] umi3升级umi4遇到的微前端问题 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from umi.