J'ai un projet écrit en ES6 avec webpack comme bundler. La plupart des transpilages fonctionnent bien, mais lorsque j'essaye d'inclure des décorateurs n'importe où, j'obtiens cette erreur:
Decorators are not supported yet in 6.x pending proposal update.
J'ai regardé le suivi des problèmes de Babel et je n'ai rien trouvé dessus, donc je suppose que je l'utilise mal. Ma configuration webpack (les bits pertinents):
loaders: [
{
loader: 'babel',
exclude: /node_modules/,
include: path.join(__dirname, 'src'),
test: /\.jsx?$/,
query: {
plugins: ['transform-runtime'],
presets: ['es2015', 'stage-0', 'react']
}
}
]
Je n'ai aucun problème avec quoi que ce soit d'autre, les fonctions fléchées, la déstructuration tout fonctionne bien, c'est la seule chose qui ne fonctionne pas.
Je sais que je pourrais toujours revenir à Babel 5.8 où je l'avais fonctionné il y a quelque temps, mais s'il y a un moyen de faire fonctionner cela dans la version actuelle (v6.2.0), cela aiderait.
presets
.Réponses:
Ce plugin Babel a fonctionné pour moi:
https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy
.babelrc
ou
Webpack
Réagir natif
Avec
react-native
vous devez utiliser lebabel-preset-react-native-stage-0
plugin à la place..babelrc
Veuillez voir cette question et réponse pour une explication complète.
la source
development
.production
égalementenv
bloc? Vous pouvez avoirplugins
comme frère ou sœur depresets
transform-class-properties
ainsi babeljs.io/docs/plugins/transform-class-properties et assurez - vous que le plugin héritage est avant la transformation plugin classe selon les documents dans github.com/loganfsmyth/babel-plugin- transform-decorators-legacyAprès avoir passé 5 minutes sur le webchat slack de babeljs, j'ai découvert que les décorateurs sont cassés dans la version actuelle de babel (v6.2). La seule solution semble être de passer à 5,8 pour le moment.
Il semblerait également qu'ils aient déplacé leur suivi des problèmes de github vers https://phabricator.babeljs.io
J'écris tout cela, car après des heures de recherche, j'ai trouvé la documentation actuelle très pauvre et manquante.
la source
L'installation
babel-plugin-transform-decorators-legacy
ne fonctionnait pas pour moi (j'ai une configuration utilisant l'enzyme avec le karma). Il s'avère que l'installationtransform-class-properties
: transform-class-properties et s'assurer que le plug-in hérité est avant le plug-in de classe de transformation selon les documents dans transform-decorators-legacy a finalement fait fonctionner pour moi.Je n'utilise pas non plus de
.babelrc
fichier, mais l'ajout de ceci à monkarma.conf.js
fichier a fonctionné pour moi:Je l'ai également ajouté à mes chargeurs:
la source
Vous avez juste besoin d'un plugin de décorateurs de transformation: http://babeljs.io/docs/plugins/transform-decorators/
la source
Si vous avez mis à niveau votre projet de Babel 6 vers Babel 7, vous souhaitez installer
@babel/plugin-proposal-decorators
.Si vous souhaitez prendre en charge les décorateurs hérités utilisés dans Babel 5, vous devez configurer votre
.babelrc
comme suit:Assurez-vous qu'il
@babel/plugin-proposal-decorators
vient avant@babel/plugin-proposal-class-properties
dans le cas où vous utilisez ce dernier.la source