Je ne parviens pas à obtenir une transformation asynchrone/wait qui fonctionne . Qu'est-ce qui me manque?
Mon .babelrc:
{
"presets": [ "es2015", "stage-0" ]
}
Mon package.json (snippé):
{
"babel-core": "^6.1.2",
"babel-plugin-transform-runtime": "^6.1.2",
"babel-preset-es2015": "^6.1.2",
"babel-preset-stage-0": "^6.1.2"
}
Sortie:
babel src/server
SyntaxError: src/server/index.js: Unexpected token (7:21)
5 |
6 | try {
> 7 | let server = await server('localhost', env.NODE_PORT || 3000)
| ^
8 | console.log(`Server started on ${server.info.uri}`)
9 | } catch (err) {
10 | console.error('Error starting server: ', err)
Selon ce post, vous devez avoir babel-polyfill
Babel 6 regeneratorRuntime n'est pas défini avec async/wait
J'espère que ça vous aidera :)
MODIFIER:
Ce n'est pas obligatoirement babel-polyfill mais c'est le seul que j'ai utilisé.
Comme Gothdo l'a dit: le mot clé await
doit être dans la portée d'une fonction. De plus, cette définition de fonction doit avoir le mot clé async
.
Cela signifie que vous ne pouvez pas avoir le mot clé await
dans l'étendue de niveau supérieur.
On dirait que async/wait est uniquement disponible dans babel-preset-stage-3
Utilisez le Async pour générer une transformation .
$ npm install babel-plugin-transform-async-to-generator
Ajoutez la ligne suivante à votre fichier .babelrc
:
{
"plugins": ["transform-async-to-generator"]
}
Il est recommandé de passer à Babel 7 et d'utiliser babel-env plutôt que d'étapes (voir ici: https://github.com/babel/babel-upgrade ).
Il existe une commande que vous pouvez utiliser pour mettre à niveau en conséquence:
npx babel-upgrade
Vous pouvez les compiler vous-même à l'aide du plug-in transform-async-to-module-method
. Cela vous permet de les compiler en co-routines bluebird qui nécessitent des générateurs ES6 (disponibles dans node4).
Ou, si vous devez le recompiler dans ES5 pour le rendre compatible avec les navigateurs, vous pouvez utiliser transform-async-to-generator
et la variable regenerator
de Facebook.
J'ai écrit sur la façon de configurer votre configuration de babel ici http://madole.xyz/async-await-es7/