Если узел 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);
  };
})()

Это моя конфигурация babel:

  "babel": {
    "plugins": [
      "source-map-support",
      "transform-runtime"
    ],
    "presets": [
      [
        "env",
        {
          "targets": {
            "node": "8.10"
          }
        }
      ],
      "stage-3"
    ]
  }
0
Jay 22 Сен 2018 в 08:13

1 ответ

Лучший ответ

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

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

1
loganfsmyth 22 Сен 2018 в 18:09