我对巴别塔有一个奇怪的问题。当我在一个类中使用一个简单的生成器函数时,babel会根据它创建一个函数,其中包含对regeneratorRuntime的调用。

var marked3$0 = [getQueryDummy].map(regeneratorRuntime.mark);
function getQueryDummy(start, end, step) {
    return regeneratorRuntime.wrap(function getQueryDummy$(context$4$0) {

不好的是,它不会创建此函数,当我忘记手动用原始生成器替换编译生成器时(总是发生),该函数总是会导致错误。

我知道我可以添加
require('babel/polyfill')

到我的文件。 polyfill包含regeneratorRuntime函数。这就是它变得很奇怪的地方。即使我放置了require(...)
在文件的最顶部,babel在包含polyfill之前调用regeneratorRuntime,这再次导致相同的错误。

为了完整起见,这是生成器
function *getQueryDummy(start, end, step) {
  while (start < end) {
    yield [start, '@dummy'];
      start += step;
  }
}

我正在使用babel版本5.8.23

有没有办法告诉babel根本不要触摸generators? Node 本身就支持它们,而无需我进行编译...

最佳答案

您可以blacklist regenerator。如果您使用transform进行构建:

babel.transform(code, {blacklist:['regenerator']});

或从命令行输入:
--blacklist regenerator

关于node.js - 如何防止Babel转换生成器功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32995587/

10-09 20:08
查看更多