文档章节

webpack打包vue项目IE报错,“对象不支持“use”属性或方法”

o
 osc_x4h57ch8
发布于 2018/04/24 11:42
字数 484
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

问题:“对象不支持“use”属性或方法”

最近一个项目在IE10下遇到了问题,在此记录下解决方案。

 

首先IE下报错“对象不支持xx属性或方法”,意思就是代码中用了某个IE下没有的属性或方法,我们可以查看详细堆栈信息。

可以看到错误具体位置是这个文件的6:112699位置。

由于代码是压缩的,手动格式化后再看,这样看来就是tt这个对象没有use方法了,在IE10下加个debugger再看

果然tt.use为undefined,所以报错了。但是在IE11下并没有报错,接着在IE11下加个debugger再看

发现tt.__proto__.use方法是存在的,IE的调试工具不太直观换成chrome再看看

可以发现确实有一个tt.__proto__.use方法,所以可以得出结论,在IE11和chrome下,tt通过访问到了原型链上的use方法,进一步查资料发现IE10是不支持__proto__属性的,所以问题的根源找到了。

 

经过分析,此处代码应该是swiper中的,因为我在项目中引入了vue-awisome-swiper,而vue-awisome-swiper只是封装了swiper插件,所以还得去swiper代码下找,最后找到了node_module下的swiper目录

发现swiper使用了__proto__实现继承,定位到此处的代码,可以发现此处的if就是兼容IE10不兼容__proto__的,而这个if判断在build后丢失了,我猜测可能是由于babel6默认不支持IE系列,所以默认__proto__是存在的,而兼容__proto__的判断代码直接去掉了。

 

解决方案:引入polyfill

最后引入了这个polyfill解决了此问题,https://www.npmjs.com/package/proto-polyfill

使用方法:在webpack入口文件的最上方引入即可

import 'proto-polyfill'

完。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

四面字节跳动(高级开发岗):分布式+中间件+TCP+JVM+Hashmap+ThreadLocal

字节跳动的面试官都挺好,面试的内容是我面试那么多家以来最全面的,问题也没有特别刁钻,都比较符合工作场景。 项目很重要,项目是敲门砖也是面试的大头,如果我没有简历上的两个项目的话,...

IT-哆哆
10分钟前
0
0
直播回顾

因业务需要,接触了一下直播,作为一个小白,在此做个回顾。 需求:在我们自己的APP上直播带货 调研:阿里云视频直播、腾讯云标准直播 简单地来说,直播就是把主播端采集的视频传送给用户端。...

osc_nk8pyo7o
10分钟前
7
0
神经网络中的激活函数

作者|Renu Khandelwal 编译|VK 来源|Medium 什么是神经网络激活函数? 激活函数有助于决定我们是否需要激活神经元。如果我们需要发射一个神经元那么信号的强度是多少。 激活函数是神经元通过神...

osc_993tr4xp
12分钟前
11
0
重磅!YOLOv4阅读笔记(附思维导图和论文译文)!

今天刷看到了YOLOv4之时,有点激动和兴奋,等了很久的YOLOv4,你终究还是出现了 论文地址:https://arxiv.org/pdf/2004.10934.pdf GitHub地址:https://github.com/AlexeyAB/darknet 觉得作者...

osc_zwv9uj8l
12分钟前
14
0
2.链表

点击使用幕布网页版查看(含思维导图) 链表(单链表)是一种通过指针将一组零散的内存块串联起来的数据结构,每个链表的结点除了存储的数据之外,还需要记录链上的下一个节点的地址 链表的插...

osc_73pstnki
13分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部