J'essaie d'exporter un module es6 dans header.js
:
export default {
setHeaderHighlight: function (index) {
// do somethings
}
};
Et importez-le dans index.js
:
import header from "./header.js"
$(function () {
header.setHeaderHighlight(0);
});
Puis la transformation sort en index.bundle.js
:
var _header = __webpack_require__(129);
var _header2 = _interopRequireDefault(_header);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj }; // crash here
}
Voici donc le problème, ie8 augmentera d'un Expected identifier
Exception à { default: obj }
, mais tout va bien> = ie9.
Puis-je faire quelque chose avec ça?
Par défaut, Babel 6.x vous oblige à activer un ensemble explicite de transformations. Le standard es2015
preset convertit ES6 en ES5, mais IE8 n'est pas compatible ES5. Dans ce cas, si vous regardez la liste des plugins , vous verrez
Ceux-ci convertiront vos propriétés pour qu'elles soient compatibles avec IE8. Généralement, dans Babel 6.x, vous feriez cela en passant ces noms dans votre tableau plugins
, à côté du tableau presets
et en installant les transformations via
npm install --save-dev babel-plugin-transform-es3-member-expression-literals babel-plugin-transform-es3-property-literals
J'utilise webpack + es3ify-loader comme solution de contournement.
loaders: {
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['es3ify', `babel?${JSON.stringify(babelQuery)}`],
},
}
J'ai aussi le problème, et j'ai écrit n plugin webpack pour le résoudre. Je ne savais pas vraiment s'il y avait une meilleure façon de le gérer, mais cela fonctionne.
Le module dans node_modules fonctionne également bien.