babel 6 async/await:意外的令牌

leg*_*ind 16 javascript babeljs

我无法获得异步/等待转换工作.我错过了什么?

我的.babelrc:

{
  "presets": [ "es2015", "stage-0" ]
}
Run Code Online (Sandbox Code Playgroud)

我的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"
}
Run Code Online (Sandbox Code Playgroud)

输出:

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)
Run Code Online (Sandbox Code Playgroud)

Yor*_*rmi 12

根据这篇文章你需要有 babel-polyfill

Babel 6 regeneratorRuntime未使用async/await定义

希望它能帮到你:)

编辑:

它不一定是babel-polyfill,但它是我使用的唯一一个.

正如Gothdo所说:await关键字必须在函数范围内.而且,这个函数定义必须有async关键字.

这意味着您不能await在顶级范围内拥有关键字.

  • 你的`await`行是否在函数范围内?我不确定,但它似乎不能在标有`async`的函数之外工作. (12认同)
  • 只要你在入口点导入`babel-polyfill`就可以使用带有stage-0和es2015预设的babel.正如BrunoLM所说,确保安装了模块;) (2认同)