如何防止Babel转译生成器函数

6

我在使用babel时遇到了一个奇怪的问题。当我在我的类中使用简单的生成器函数时,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添加到我的文件中。该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?节点本地支持它们,我不需要编译它...

2个回答

7

如果你正在使用transform构建,你可以将regenerator列入黑名单

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

或者在命令行中使用以下命令:

--blacklist regenerator

4
能否通过 .babelrc 来进行黑名单设置? - BorisOkunskiy

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接