102 votes

Webpack babel 6 ES6 décorateurs

J'ai un projet écrit en ES6 avec webpack que mon bundler. La plupart des transpiling fonctionne bien, mais quand j'essaie d'inclure les décorateurs n'importe où, j'obtiens cette erreur:

Decorators are not supported yet in 6.x pending proposal update.

J'ai regardé sur le babel issue tracker, et n'ont pas été en mesure de trouver quelque chose sur elle, donc je suis en supposant que je l'utilise mal. Mon webpack config (la bits):

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, flèche fonctions, déstructuration tous les beaux travaux, c'est la seule chose qui ne fonctionne pas.

Je sais que je pourrais toujours revenir à babel 5.8 où je l'ai eu à travailler il y a un moment, mais si il y a moyen de le faire fonctionner dans la version actuelle (v6.2.0), il pourrait l'aider.

171voto

Kyle Finley Points 3301

Ce plugin a fonctionné pour moi:

https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy

npm i --save-dev babel-plugin-transform-decorators-legacy

.babelrc

{
  "presets": ["es2015", "stage-0", "react"],
  "plugins": [
    ["transform-decorators-legacy"],
    // ...
  ]
}

ou

Webpack

{
  test: /\.jsx?$/,
  loader: 'babel',
  query:
    cacheDirectory: true,
    plugins: ['transform-decorators-legacy' ],
    presets: ['es2015', 'stage-0', 'react']
  }
}

41voto

Pavlin Points 1607

Après avoir passé 5 minutes sur le babeljs mou webchat, j'ai trouvé que les décorateurs sont cassés dans la version actuelle de babel (v6.2). La seule solution semble être de revenir à 5.8 en ce moment.

Il semble aussi qu'ils ont déménagé de leur outil de suivi de github pour https://phabricator.babeljs.io

Je vous écris tout cela, car après des heures de recherche j'ai trouvé la documentation actuelle très pauvres et dépourvues.

3voto

yetone Points 29

Vous avez juste besoin d'un transformer les décorateurs plugin: http://babeljs.io/docs/plugins/transform-decorators/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X