为什么babel-preset-env会干扰transform-async-generator?

时间:2018-07-15 17:43:07

标签: javascript async-await babeljs

我正在处理与Babel - regeneratorRuntime is not defined, when using transform-async-to-generator plugin类似的问题。我已经解决了,但是我不确定为什么。

我的问题

简单来说,我想要实现的是能够在使用Webpack 4和Babel的React项目中使用生成器函数和async / await

我的错误假设

我最初做出的但显然是错误的假设是,认为Babel的babel-preset-env是一种快速修复程序,其中包括 JS的大部分常见现代功能(ES2015-ES2018 ?)

要使用传播语法,我必须添加transform-object-rest-spread;要与yield一起使用生成器函数,我必须添加transform-runtime

但是,当我想使用async / await功能时,遇到了与尝试使用生成器函数时相同的错误:

  

ReferenceError:未定义regeneratorRuntime

已解决,但不了解

我设法用something like this解决了这个问题,所以我的.babelrc文件看起来像:

{
  "presets": [
//    "env",
    "react",
    "stage-0"
  ],
  "plugins": [
    "transform-object-rest-spread",
    "transform-async-to-generator",
    [
      "transform-runtime",{
      "polyfill": false,
      "regenerator": true
    }]
  ]
}

请注意,我已注释掉预设的env部分。注释掉之后,我的问题似乎已解决,并且我仍然可以使用所有其他功能。

问题

  • 为什么现在可以使用,但以前不能使用?
  • 还需要transform-async-to-generator与Babel / Webpack一起使用async / await;还是有更好的方法(例如,更简单的方法)?

0 个答案:

没有答案