Eu tenho um projeto escrito em ES6 com webpack como meu bundler. A maior parte da tradução funciona bem, mas quando tento incluir decoradores em qualquer lugar, recebo este erro:
Decorators are not supported yet in 6.x pending proposal update.
Eu olhei o rastreador de problemas do babel e não consegui encontrar nada nele, então presumo que esteja usando errado. Minha configuração do webpack (os bits relevantes):
loaders: [
{
loader: 'babel',
exclude: /node_modules/,
include: path.join(__dirname, 'src'),
test: /\.jsx?$/,
query: {
plugins: ['transform-runtime'],
presets: ['es2015', 'stage-0', 'react']
}
}
]
Não tenho problemas com mais nada, funções de seta, desestruturação tudo funciona bem, isso é a única coisa que não funciona.
Sei que sempre posso fazer o downgrade para o babel 5.8, onde estava funcionando há um tempo, mas se houver alguma maneira de fazer isso funcionar na versão atual (v6.2.0), isso ajudaria.
presets
.Respostas:
Este plugin do Babel funcionou para mim:
https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy
.babelrc
ou
Webpack
React Native
Com
react-native
você deve usar obabel-preset-react-native-stage-0
plugin..babelrc
Por favor, veja esta pergunta e resposta para uma explicação completa.
fonte
development
.production
tambémenv
bloco afinal? Você pode terplugins
como irmão depresets
transform-class-properties
também babeljs.io/docs/plugins/transform-class-properties e também certificar-se de que o plug-in legado está antes do plug-in de classe de transformação conforme os documentos em github.com/loganfsmyth/babel-plugin- transform-decorators-legacyDepois de passar 5 minutos no webchat do slack do babeljs, descobri que os decoradores estão corrompidos na versão atual do babel (v6.2). A única solução parece ser fazer o downgrade para 5.8 neste momento.
Também parece que eles moveram o rastreador de problemas do github para https://phabricator.babeljs.io
Escrevo tudo isso, pois depois de horas de pesquisa, descobri que a documentação atual é muito pobre e insuficiente.
fonte
Instalar apenas
babel-plugin-transform-decorators-legacy
não funcionou para mim (eu tenho uma configuração usando enzima junto com karma). Acontece que a instalação detransform-class-properties
: transform-class-properties e também certificando-se de que o plug-in legado está antes do plug-in de classe transform de acordo com os documentos em transform-decorators-legacy finalmente fez com que funcionasse para mim.Também não estou usando um
.babelrc
arquivo, mas adicionar isso ao meukarma.conf.js
arquivo funcionou para mim:Eu também adicionei aos meus carregadores:
fonte
Você só precisa de um plugin de decoradores de transformação: http://babeljs.io/docs/plugins/transform-decorators/
fonte
Se você atualizou seu projeto do Babel 6 para o Babel 7, você deseja instalar
@babel/plugin-proposal-decorators
.Se você deseja oferecer suporte a decoradores legados como usados no Babel 5, você precisa configurar seu da
.babelrc
seguinte forma:Certifique-se de
@babel/plugin-proposal-decorators
vir antes, se@babel/plugin-proposal-class-properties
você estiver usando o último.fonte