自从 npm 模块更改为 ES2015 后,我无法正常工作。
我有一个 ES2015 应用程序,它由 browserify 捆绑并使用 babelify 转换。我正在尝试升级一个名为 credit-card 的 npm 模块以进行信用卡验证,该模块在当前版本中已从 ES5 更改为 ES6。问题始于 IE11/Edge。该代码在 Chrome 上运行良好。以下是在转换后的应用程序中导入模块的方式(babel 代码):
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
看起来 IE 中完全没有默认值。这是一个已知的问题?你们中有人以前遇到过这个问题并且可以给我一些提示吗?关于如何调查此问题以了解问题所在以及如何解决问题的任何指示?
最佳答案
在 IE11 调试器中单步执行 require()
,我发现在 IE11 中 Object.assign
是 undefined
存在问题。经过一番搜索,我找到了 this thread .该线程中的答案最终得到解决。我需要将 polyfill 添加到我的 browserify 包中,并使用选项 loose: true
启用 "transform-es2015-classes"
插件(有关代码,请参阅 this thread)。
关于javascript - IE11/Edge 中缺少模块导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266766/