基本上,Webpack在bundle的开头添加了一些代码:
oTable.bindAggregation("items", {
path: "/BusinessPartners('BusinessPartnerId')/SalesOrders",
template: oTemplate,
parameters: {
expand: "SalesOrderItems"
}
});
IE8导致错误(/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
未定义)。我使用babel Object.defineProperty
预设为加载器,这样它就不会成为问题(如果我想在其他地方使用它,它会为它生成存根):
es2015-loose
我的所有代码(重现此问题的特殊存储库)是here, pointing to particular commit。您可以通过运行function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var obj = (_obj = {}, _defineProperty(_obj, "x" + foo, "heh"), _defineProperty(_obj, "y" + bar, "noo"), _defineProperty(_obj, "foo", "foo"), _defineProperty(_obj, "bar", "bar"), _obj);
断言来检查这一点。
答案 0 :(得分:0)
Webpack支持ES5及更高版本。但是,IE8运行ES3,因此您需要一个polyfill才能运行ES5代码。您可以将ES5填充程序加载器添加到Webpack配置中。此外,您还应该将NODE_ENV设置为Production,然后它不会为空描述符抛出错误。
Object.defineProperty({},'a',{});
所以,这就是我们如何克服这个错误,但问题仍然存在,如果描述符不为空,会发生什么?即,如果未提供值,则不提供get和set,但是可以配置,可枚举和可写?答案是,它在IE8中无声地失败(这是记录的行为)。