2

我想在仍然必须支持 IE8 的大型项目中使用 Webpack 2。

我已经安装了babel-preset-env,因此一旦每个浏览器都不受该项目的支持,我就可以在将来轻松地逐一弃用任何 IE < 11。

根据 babel-preset-env 自述文件“如果您的目标是 IE 8 和 Chrome 55 [babel-preset-env] 将包括 IE 8 所需的所有插件,因为您仍然需要同时支持这两者。”

据我了解,我还主要需要安装babel-polyfill它的 IE5 shim,还需要安装它的 ES6 和我可能希望使用的 7 功能的 polyfill。

然而,安装了这些东西后,我的代码仍然在 IE8(在 Browserstack 中)Object.defineProperty(__webpack_exports__, "__esModule", { value: true });首次运行时出现问题。我认为一个功能正在被垫片“修复”。

是不是没有被正确地填充?我错过了一步吗?

4

1 回答 1

0

我以前遇到过同样的问题,这就是我要解决的问题。

在 es6 功能中,

一个类可以用get和set定义一个属性来封装一个字段。

但它不适用于 IE8。

因为不支持 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'查看链接,github es3ify到您的 IE7/8 的 webpack 构建

于 2017-11-14T05:09:38.490 回答