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加载程序
,我花了半个小时才理解:)