web-dev-qa-db-fra.com

babel 6 async/wait: jeton inattendu

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)
15
legomind

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.

12
Yormi

On dirait que async/wait est uniquement disponible dans babel-preset-stage-3

http://babeljs.io/docs/plugins/preset-stage-3/

3
Allain Lalonde

Utilisez le Async pour générer une transformation .

Installation

$ npm install babel-plugin-transform-async-to-generator

Usage

Ajoutez la ligne suivante à votre fichier .babelrc:

{
  "plugins": ["transform-async-to-generator"]
}
0

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
0
Tamizaan

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/

0
Madole