最近接手一个react项目,在ie下碰到了俩问题
ie11报错如下:
跟踪一下之后,发现是一些其他的npm包里面用到了startswith这个方法,可以自己polyfill一下:
if (!string.prototype.startswith) { string.prototype.startswith = function (search, pos) { return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search } }
不过加prototype的方法毕竟不好,可以通过引入@babel/polyfill
解决,在入口文件中引入import '@babel/polyfill'
;
ie11问题解决后,ie10又出问题了。。。
犯了stackoverflow和github的很多帖子之后,在这个帖子里找到,发现是object.setprototypeof
的问题,object.setprototypeof说是支持了ie9-11, 实际在源码里只实现了11+(https://github.com/paulmillr/es6-shim/blame/master/readme.md#l78)
解决办法可以是在polyfill url后加上excludes=object.setprototypeof
, 或者自己实现object.setprototypeof
方法,我这里引入了一个库,然后在入口文件中加上object.setprototypeof = require('setprototypeof');
其实这个库里的实现代码非常少, 可以简单看下
'use strict' /* eslint no-proto: 0 */ module.exports = object.setprototypeof || ({ __proto__: [] } instanceof array ? setprotoof : mixinproperties) function setprotoof (obj, proto) { obj.__proto__ = proto return obj } function mixinproperties (obj, proto) { for (var prop in proto) { if (!obj.hasownproperty(prop)) { obj[prop] = proto[prop] } } return obj }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
荐 超强的入门文章 !!! JavaScript 速成计划第二篇(杂项详解:JS操作HTML 与 CSS、异常、事件)!
教你搭建 nodejs+mongoose+Graphql+Vue+Typescript 框架(上)
【Nginx】如何为已安装的Nginx动态添加模块?看完我懂了!!
网友评论