在节点6中使用带有Babel的async/await

MyT*_*tle 17 javascript node.js async-await babeljs

我正在尝试为Node v6.9.2配置Babel.我想使用async/ awaitconstructs.

因为我是Babel和所有Node基础架构的新手,所以我很困惑如何正确配置它:

  • 我应该使用什么预设?Node已经实现了大部分ES6功能.因此,出于性能原因,我不希望Babel转换Node 6.9.x已经支持的功能(箭头功能,新导入机制等).

  • 我应该包含哪些插件,以便我可以使用async/await?在那里,我也搞不清楚,因为一些经过研究,我发现几个插件:syntax-async-functions,transform-async-to-generator和更多一些.

例子.babelrc会有所帮助.

谢谢

Mic*_*ngo 15

我应该使用什么预设?

您不需要使用任何预设.预设只是插件的集合,如果您想要转换一组功能(例如所有ES2015 preset-es2015),它可以更容易使用.但是,当您只想转换这些功能时,您只需要包含相应的插件.

我应该包含哪些插件,以便我可以使用async/await?

由于节点6支持生成器,因此您可以使用transform-async-to-generator以下内容.babelrc:

{
  "plugins": ["transform-async-to-generator"]
}
Run Code Online (Sandbox Code Playgroud)

当然,如果您需要转换更多不受支持的功能,则需要添加插件.

替代 babel-preset-env

babel-preset-env自动确定指定环境所需的插件.这不包括任何不必要的插件.要指定当前的节点版本,您可以使用.babelrc:

{
  "presets": [
    ["env", {
      "targets": {
        "node": "current"
      }
    }]
  ]
}
Run Code Online (Sandbox Code Playgroud)


rsp*_*rsp 10

简短的回答

对节点6.x使用Babel预设:

答案很长

要查看给定节点版本支持的ES功能,请参阅:

对于async/ await特别支持,请参阅:

如果您使用Node v7.x(当前版本),那么您可以使用该--harmony标志并使用async/ awaitnatively而不进行转换.

Node v8.x(可用作夜间版本)甚至不需要--harmony标记.

但请注意,Node不支持import/ export- 知道为什么看到: