IE11 / Edge

时间:2016-09-01 08:45:34

标签: javascript node.js internet-explorer npm

我在将npm模块更改为ES2015时无法正常工作。

我有一个由browserify捆绑的ES2015应用程序,并通过babelify进行转换。我正在尝试升级名为信用卡的npm模块进行信用卡验证,该模块在当前版本中已从ES5更改为ES6。问题始于IE11 / Edge。该代码在Chrome上正常运行。以下是如何在转换的应用程序中导入模块(babel' d代码):

var _this = this;

var _creditCard = require('credit-card');

var _creditCard2 = _interopRequireDefault(_creditCard);

这是一段代码:

this.validateCreditCard = function () {
  var ccNumber = _this.account_number_credit_card.value.replace(/\D/,     '');
  _this.creditCardValidation = {
    accountHolder:     _this.account_holder_credit_card.value.replace(/\W/g, '').length >= 2,
    cvc: _this.account_cvc_credit_card.value.replace(/\D/g, '').length     > 2,
    accountNumber: _creditCard2.default.isValidCardNumber(ccNumber,     _creditCard2.default.determineCardType(ccNumber, { allowPartial: true }))
  };
  return _underscore2.default.all(_underscore2.default.values(_this.creditCardValida    tion));
};

现在在Chrome上运行没有问题。但是,在IE上,缺少信用卡模块的导出功能。

Here's a printscreen of a console log of the module in IE

And here's Chrome

看起来IE中完全缺少默认值。这是一个已知的问题?你们之前有没有遇到过这个问题,可以给我一些提示吗?有关如何调查此问题以了解出现问题以及如何解决问题的任何指示?

1 个答案:

答案 0 :(得分:0)

单步执行IE11调试器中的require()我发现IE11中Object.assign undefined存在问题。经过一番搜索,我找到了this thread。这个问题的答案最终得到了解决。我需要将polyfill添加到我的browserify包中并使用opt "transform-es2015-classes"启用loose: true插件(有关代码,请参阅this thread)。