Почему babel превращает асинхронные функции в генераторы для узла 8.10? - PullRequest
0 голосов
/ 22 сентября 2018

Если узел 8.10 поддерживает async / await, почему babel преобразует асинхронные функции в генераторы?

babel переводит:

const foo = async () => {
  const b = await bar()
  console.log(b)
}

в:

const foo = (() => {
  var _ref2 = (0, _asyncToGenerator3.default)(function* () {
    const b = yield bar();
    console.log(b);
  });

  return function foo() {
    return _ref2.apply(this, arguments);
  };
})()

thisмой конфиг babel:

  "babel": {
    "plugins": [
      "source-map-support",
      "transform-runtime"
    ],
    "presets": [
      [
        "env",
        {
          "targets": {
            "node": "8.10"
          }
        }
      ],
      "stage-3"
    ]
  }

1 Ответ

0 голосов
/ 22 сентября 2018

Вы выбрали компиляцию асинхронных функций, включив "stage-3".Предустановка env игнорирует их, основываясь на конфигурации, но stage-3 снова возвращается.Это, среди прочих причин, является причиной того, что мы полностью исключили предустановки stage-X в Babel 7.x, потому что их трудно понять, и вы редко знаете, что они на самом деле делают.

Моя рекомендация будет состоять в том, чтобы удалить предустановку stage-3, и если там есть плагины, которые вам действительно нужны, добавляйте их в каждом конкретном случае.

...