javascript - IE11/Edge 中缺少模块导出

标签 javascript node.js internet-explorer npm

自从 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

And here's Chrome

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

最佳答案

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

关于javascript - IE11/Edge 中缺少模块导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266766/

相关文章:

javascript - jQuery 间隔在到达最后一个元素后重新启动

javascript - 将 json 转换为嵌套的 JavaScript 对象

javascript - TypeScript:有没有办法扩展多个接口(interface)并合并相同的属性?

node.js - 使用 jimp 将项目推送到数组时出现“意外的文件结尾”

javascript - 如何使用 Node 创建一个子进程作为特定用户?

javascript - DOM 操作的 IE 问题

javascript - 自定义 dojo 小部件不会在单击按钮时清除文本字段

node.js - 为什么 Mocha 断言在 mongoose.Schema.objectId 上失败?

javascript - 如何使用纯 JavaScript 来定位 IE10 及以下版本?

java - 如何停止 selenium click() 在 IE 上等待 30 秒