我想在一个仍然支持IE8的大型项目中使用Webpack 2。
我已经安装了babel-preset-env,这样我就可以很容易地在将来一个接一个地弃用任何IE < 11,一旦每个浏览器都不被这个项目支持。
根据babel-preset-env自述文件,“如果你的目标是IE 8和Chrome55,那么babel-preset-env将包含IE 8所需的所有插件,因为你仍然需要同时支持这两个插件。”
据我所知,我还需要安装babel-polyfill,主要是为了它的IE5填充,但也是为了它的ES6和7个我可能想要使用的特性。
然而,在安装了这些东西之后,我的代码在第一次运行Object.defineProperty(__webpack_exports__, "__esModule", { value: true });的时候仍然运行在IE8上(在浏览器堆栈中)。我认为这个函数已经被填充物“修复”了。
它是不是没有得到正确的垫片?我是不是漏掉了一步?
发布于 2017-11-14 13:09:38
我以前也遇到过同样的问题,下面是我为解决这个问题所做的。
在es6特性中,
类可以使用get和set定义属性来封装字段。
但它不能在IE8上运行。
因为see the docs,不支持defineProperty方法
因此,我们更改了整个代码模式,如下所示
let val1;
class className {
methodName() {
this.val2 = 'test';
//code here
}
getVal1() {
return val1;
}
setVal1(_val1) {
val1 = _val1;
}
getVal2() {
return this.val2;
}
setVal2(_val2) {
this.val2 = _val2;
}
}
module.exports = className;我建议将'es3ify‘see the link,github es3ify添加到您的针对IE7/8的webpack版本中
https://stackoverflow.com/questions/46173593
复制相似问题