0

由于一些遗留产品需要 IE8 兼容模式,我们不能使用Object.defineProperty调用。

我们正在使用 ES6 语法从 TypeScript 模块构建一个大包。如果这很重要,我们没有使用实时模块加载、热重载、动态模块加载和任何类似的技术。

我知道官方限制和此线程中的讨论。我正在尝试应用一个不太好的修复/解决方法,如下所示。

我已经检查了 Webpack 创建的包,据我所知,唯一使用它的地方是代码访问default导出的成员时。

我在技术上更改了代码以删除defineProperty并使用像这样的简单“一次性”字段分配。

__webpack_require__.d = function(exports, name, getter) {
  if(!__webpack_require__.o(exports, name)) {
    exports[name] = getter();
    //Object.defineProperty(exports, name, {
    //  configurable: false,
    //  enumerable: true,
    //  get: getter
    //});
  }
};

乍一看,一切正常。但由于我不是 Webpack 和 ES6 模块规范专家,所以我想问一下这种变化究竟会产生什么影响?在这种特定情况下这样做安全吗?

4

0 回答 0