Javascript Babel 6.0.20模块功能不适用于IE8

Javascript Babel 6.0.20模块功能不适用于IE8,javascript,internet-explorer-8,babeljs,Javascript,Internet Explorer 8,Babeljs,我正在尝试导出header.js中的es6模块: export default { setHeaderHighlight: function (index) { // do somethings } }; import header from "./header.js" $(function () { header.setHeaderHighlight(0); }); var _header = __webpack_require__(129);

我正在尝试导出
header.js中的es6模块:

export default {
    setHeaderHighlight: function (index) {
        // do somethings
    }
};
import header from "./header.js"

$(function () {
    header.setHeaderHighlight(0);
});
var _header = __webpack_require__(129);

var _header2 = _interopRequireDefault(_header);

function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj }; // crash here
}
并将其导入
index.js

export default {
    setHeaderHighlight: function (index) {
        // do somethings
    }
};
import header from "./header.js"

$(function () {
    header.setHeaderHighlight(0);
});
var _header = __webpack_require__(129);

var _header2 = _interopRequireDefault(_header);

function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj }; // crash here
}
然后在
index.bundle.js
中出现转换:

export default {
    setHeaderHighlight: function (index) {
        // do somethings
    }
};
import header from "./header.js"

$(function () {
    header.setHeaderHighlight(0);
});
var _header = __webpack_require__(129);

var _header2 = _interopRequireDefault(_header);

function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj }; // crash here
}
问题就在这里,ie8将在
{default:obj}
处出现
预期标识符
异常,但一切正常>=ie9


我能做些什么吗?

默认情况下,Babel 6.x要求您启用一组显式转换。标准
es2015
预设将ES6转换为ES5,但IE8与ES5不兼容。在这种情况下,如果您查看

这些将转换您的属性以与IE8兼容。通常,在Babel 6.x中,您可以将这些名称作为
插件
数组的一部分传递给
预设
数组,并通过

npm install --save-dev babel-plugin-transform-es3-member-expression-literals babel-plugin-transform-es3-property-literals
我使用webpack+作为解决方法

loaders: {
  {
    test: /\.jsx?$/,
    exclude: /node_modules/,
    loaders: ['es3ify', `babel?${JSON.stringify(babelQuery)}`],
  },
}

我也有这个问题,我写信来解决它。我真的不知道是否有更好的方法来处理它,但它是有效的


node_modules中的模块也运行良好。

@Bruce仔细研究,我的步骤应该是有效的,但它们不是。我提出了一个错误:上面的解决方案对我有效,但请注意,如果您有一个默认的模块导入,如从“jquery”
导入的
import*,它仍然会扩展为
\u jquery2.default
,它使用“default”保留关键字,打破IE.Phabricator链接:发行编号与旧Github相同。谁来投票?这根本解决不了我的问题!在同一地点坠毁。如果你有一个特定的案例不起作用,请提交一个bug。这是正确的答案,如果它不起作用,我们需要错误报告。我找到了一个临时解决方案:
webpack-p
将对两个babel es3插件执行相同的操作。我尝试了这种方法,但我得到了“解析错误:第1行:导入后丢失”,但没有任何意义:/修复了它,订单事项:)注意:在Webpack2中,您必须将
es3ify
加载程序命名为
es3ify加载程序
-和
babel
命名为
babel加载程序
,我花了半个小时才理解:)