Reputation: 241
Im having trouble getting async / await transforms working. What am I missing?
My .babelrc:
{
"presets": [ "es2015", "stage-0" ]
}
My package.json (snipped):
{
"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"
}
Output:
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)
Upvotes: 16
Views: 21263
Reputation: 11
It's recommended to upgrade to Babel 7 and use babel-env as opposed to stages (see here: https://github.com/babel/babel-upgrade).
There's a command you can use to upgrade accordingly:
npx babel-upgrade
Upvotes: 0
Reputation: 5378
Use the Async to generator transform.
$ npm install babel-plugin-transform-async-to-generator
Add the following line to your .babelrc
file:
{
"plugins": ["transform-async-to-generator"]
}
Upvotes: 0
Reputation: 479
According to this post you need to have babel-polyfill
Babel 6 regeneratorRuntime is not defined with async/await
Hopefully it'll help you :)
EDIT:
It doesn't have to be babel-polyfill but it's the only one I used.
As Gothdo said: the await
keyword has to be in a function scope. Moreover, this function definition has to have the async
keyword.
This means that you can not have the await
keyword on the top-level scope.
Upvotes: 12
Reputation: 1
You can compile them yourself using the transform-async-to-module-method
plugin, this allows you to compile them down to bluebird co-routines which requires ES6 generators (available in node4).
Or if you need to compile it back to ES5 so it's compatible for browsers you can use transform-async-to-generator
and facebook's regenerator
.
I've written about how to set up your babel config here http://madole.xyz/async-await-es7/
Upvotes: 0
Reputation: 93348
Looks like async/await is only available in babel-preset-stage-3
http://babeljs.io/docs/plugins/preset-stage-3/
Upvotes: 2