• react 使用npm构建 不支持ie问题的记录,ie报不支持contains


    公司每次发版都是使用npm install 下载package.json中关联的最新的包,虽然在package.json中,所有的包的下载都是写死了版本号,但是每一个包内部其实也引用了其他的包,这些在包内引用包的版本就无法控制。

    问题:

    之前发版后,都可以支持IE浏览器预览,但是有一发版后就不支持了,ie在加载AntdesignPro框架的时候,进入渲染页面环境报错。

    生产环境报:

    本地环境报:

    原因是:

    ie报不支持contains,可是在打包完成后umi,js包括了这些代码。

    分析:

    1、代码没问题:对比了之前能ie运行的代码,发现业务逻辑代码并没有什么改变,而且使用之前的业务逻辑代码在容器中构建的时候,也是报相同的错。相同的代码,早些时候不报错,最近构建后报错,智能说明不是代码的问题,可能是npm版本里包不同版本引发的问题。(本地环境之前npm下载的包,构建后不报错,重新下载npm包报错)

    2、npm引用依赖版本包有问题:

    本地环境运行时,标注出来了是umi.js的170972行代码有问题,点击后可以定位到相关代码片段

     此处代码上方有代码的注释,再向上找发现这个包是rc-util中使用的一个方法,在npm中找到rc-util。这个依赖我没有在package.json中进行显示使用,肯定是其他依赖包依赖了他而导致的。

    解决:

    定位这个包,找到npm官网的GitHub地址,找到了代码的更新日志,发现果然在最新的时候进行了版本升级更新,加入了qiankun的相关代码

    新的版本加入了新代码后,就无法支持ie浏览器,虽然已经向他们反馈了,但是现在还没有回应。

    那就只能在自己的项目中进行版本回退了

    在自己的package.json中,显式定义这个包的版本 

    "rc-util": "5.23.0",   升级前版本

    在npm构建的时候使用

    Npm install 的时候,有依赖包报错问题

    npm install  --legacy-peer-deps

    本地环境构建后,就可以ie显示,没有他最新更新的代码了

    生产环境中也可以通过

    GitHub修改此bug,去掉显式引用包,可以正常使用

     

  • 相关阅读:
    如何管理现代信息化机房
    Nacos:服务注册及配置中心
    pyflink1.18.0 keyby之后使用自定义keyedProcessfunction报错
    论文解析-moETM-多组学整合模型
    Redis整数集合
    ASP.NET WebForm--简介
    没有网络怎么配置传奇SF登陆器自动读取列表
    Docker2(感谢狂神)
    vscode 快速生成标准javabean
    【信号处理】扩展卡尔曼滤波EKF(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/runrun117/article/details/126926647