Tengo un proyecto escrito en ES6 con webpack como paquete. La mayor parte de la transpilación funciona bien, pero cuando intento incluir decoradores en cualquier lugar, aparece este error:
Decorators are not supported yet in 6.x pending proposal update.
Revisé el rastreador de problemas de babel y no pude encontrar nada allí, así que supongo que lo estoy usando mal. Mi configuración de paquete web (los bits relevantes):
loaders: [
{
loader: 'babel',
exclude: /node_modules/,
include: path.join(__dirname, 'src'),
test: /\.jsx?$/,
query: {
plugins: ['transform-runtime'],
presets: ['es2015', 'stage-0', 'react']
}
}
]
No tengo ningún problema con nada más, las funciones de flecha, la desestructuración funcionan bien, esto es lo único que no funciona.
Sé que siempre podría cambiar a babel 5.8, donde lo tenía funcionando hace un tiempo, pero si hay alguna forma de que esto funcione en la versión actual (v6.2.0), ayudaría.
presets
.Respuestas:
Este complemento de Babel funcionó para mí:
https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy
.babelrc
o
Webpack
Reaccionar nativo
Con
react-native
debe usar elbabel-preset-react-native-stage-0
complemento en su lugar..babelrc
Consulte esta pregunta y respuesta para obtener una explicación completa.
fuente
development
.production
tambiénenv
bloque? Puedes tenerplugins
como hermano depresets
transform-class-properties
, así babeljs.io/docs/plugins/transform-class-properties y también asegurarse de que el plugin legado es antes de que el plug-in de clase transformar según los documentos en github.com/loganfsmyth/babel-plugin- transform-decorators-legacyDespués de pasar 5 minutos en el chat web slack de babeljs, descubrí que los decoradores no funcionan en la versión actual de babel (v6.2). La única solución parece ser rebajar a 5.8 en este momento.
También parece que han movido su rastreador de problemas de github a https://phabricator.babeljs.io
Escribo todo esto, ya que después de horas de búsqueda he encontrado que la documentación actual es muy pobre y deficiente.
fuente
La instalación solo
babel-plugin-transform-decorators-legacy
no funcionó para mí (tengo una configuración que usa enzima junto con karma). Resulta que instalartransform-class-properties
: transform-class-properties y también asegurarse de que el complemento heredado esté antes que el complemento de la clase transform según los documentos en transform-decorators-legacy finalmente lo hizo funcionar para mí.Tampoco estoy usando un
.babelrc
archivo, pero agregar esto a mikarma.conf.js
archivo funcionó para mí:También lo agregué a mis cargadores:
fuente
Solo necesita un complemento de decoradores de transformación: http://babeljs.io/docs/plugins/transform-decorators/
fuente
Si actualizó su proyecto de Babel 6 a Babel 7, entonces desea instalar
@babel/plugin-proposal-decorators
.Si desea admitir decoradores heredados como se usa en Babel 5, debe configurar su de la
.babelrc
siguiente manera:Asegúrese de que
@babel/plugin-proposal-decorators
viene antes@babel/plugin-proposal-class-properties
en el caso de que esté utilizando este último.fuente