umiJs2.x 升级到umiJs3.x中遇到的一些问题

1.第一个问题

umiJs2.x中的window.g_app换成  umiJs3.x中的getDvaApp();

但是getDvaApp()有的时候获取到null。所以导致手动注册model不成功。

解决办法a:注册的时候用setTimeout包裹一下。getDvaApp()方法后面加个?;这种办法有些恶心。

b.配置文件dynamicImport: {};很奇怪,它能改变getDvaApp的生成时机。

2.第二个问题。报错如下:

 很明显是Error: TypeError: Cannot add property form1, object is not extensible。是严格模式导致的。但是问题是,无论umiJs2.x或者umiJs3.x都是webpack 配置,webpack 默认开启了严格模式。那为什么能在2.x运行的代码,在3.x中无法运行呢?

解决办法:

umiJs3.x 中去除严格模式。
第一步:安装依赖:npm i --legacy-peer-deps  @babel/plugin-transform-modules-commonjs babel-plugin-transform-remove-strict-mode -D  

第二步配置插件:extraBabelPlugins: ["@babel/plugin-transform-modules-commonjs", "transform-remove-strict-mode"]

更新:

接着看发现并不是严格模式的问题,罪魁祸首原来是配置项里的immer, immer的作用就是保持原来的对象不被改变,在umi2中 immer是2.1.1版本,在umi3中是7.0.5版本。如果不想修改代码,最好的办法是在luck-biz-components 中锁定immer的版本号就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值