我无法获得异步/等待转换工作。 我错过了什么?
我的.babelrc:
{
"presets": [ "es2015", "stage-0" ]
}
我的package.json(剪辑):
{
"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"
}
输出:
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)
答案 0 :(得分:12)
根据这篇文章,您需要babel-polyfill
Babel 6 regeneratorRuntime is not defined with async/await
希望它会帮助你:)。
编辑:
它不一定是babel-polyfill,但它是我用过的唯一一个。
正如Gothdo所说:await
关键字必须在函数范围内。此外,此函数定义必须具有async
关键字。
这意味着您无法在顶级范围内拥有await
关键字。
答案 1 :(得分:3)
看起来async / await仅在babel-preset-stage-3
答案 2 :(得分:0)
您可以使用transform-async-to-module-method
插件自行编译它们,这允许您将它们编译为蓝鸟协同例程,这需要ES6生成器(在node4中可用)。
或者,如果您需要将其编译回ES5,那么它与浏览器兼容,您可以使用transform-async-to-generator
和facebook的regenerator
。
我已经写过关于如何在http://madole.xyz/async-await-es7/
设置您的babel配置的文章答案 3 :(得分:0)
使用Async to generator transform。
$ npm install babel-plugin-transform-async-to-generator
将以下行添加到.babelrc
文件中:
{
"plugins": ["transform-async-to-generator"]
}
答案 4 :(得分:0)
建议升级到Babel 7并使用babel-env而不是阶段(请参见此处:https://github.com/babel/babel-upgrade)。
有一个命令可用于相应升级:
npx babel-upgrade