我正在尝试在header.js
中导出es6模块:
export default {
setHeaderHighlight: function (index) {
// do somethings
}
};
然后将其导入index.js
:
import header from "./header.js"
$(function () {
header.setHeaderHighlight(0);
});
然后转变出现在index.bundle.js
:
var _header = __webpack_require__(129);
var _header2 = _interopRequireDefault(_header);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj }; // crash here
}
所以这就是问题,ie8会在Expected identifier
处出现{ default: obj }
异常,但每件事都可以> = ie9。
我能用这件事做点什么吗?
答案 0 :(得分:30)
默认情况下,Babel 6.x要求您启用一组明确的转换。标准es2015
预设将ES6转换为ES5,但IE8与ES5不兼容。在这种情况下,如果您查看plugins list,您会看到
这些会将您的属性转换为与IE8兼容。通常在Babel 6.x中,您可以将这些名称作为plugins
数组的一部分与presets
数组一起传递,并通过
npm install --save-dev babel-plugin-transform-es3-member-expression-literals babel-plugin-transform-es3-property-literals
答案 1 :(得分:6)
我使用webpack + es3ify-loader作为解决方法。
loaders: {
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['es3ify', `babel?${JSON.stringify(babelQuery)}`],
},
}
答案 2 :(得分:2)
我也有问题,我写了a webpack plugin来解决它。我真的不知道是否有更好的方法来处理它,但它确实有效。
node_modules中的模块也运行良好。