Сконфигурируйте next.js, чтобы с Babel не преобразовывать асинхронные функции - PullRequest
3 голосов
/ 02 апреля 2019

При использовании конфигурации по умолчанию Next направляет Babel использовать генераторы для моих асинхронных функций на стороне клиента.Это делает отладку более сложной, чем кажется.Как отключить это поведение?

Я использую приложение Electron, поэтому я действительно хочу, чтобы минимальное количество преобразований соответствовало среде выполнения Chromium.

Вот мое текущее содержание ключа "babel"в моем package.json:

  "babel": {
    "presets": [
      [
        "next/babel",
        {
          "preset-env": {
            "targets": {
              "chromium": 73,
              "node": 11
            }
          },
          "transform-runtime": {
            "regenerator": false
          }
        }
      ]
    ]
  }

Результатом здесь является то, что регенератор не включен, но он падает в сгенерированном Webpack коде.Если я сниму отключение regenerator, то увижу, что активы все равно передают функции async в генераторы.

enter image description here

1 Ответ

3 голосов
/ 04 апреля 2019

Я не думаю, что chromium является действительной целью для списка браузеров документации. Попробуйте "chrome": "73" в качестве цели. Обратите внимание, что значение для данной цели должно быть строковым типом, а не числом.

Если есть плагин, который вы не хотите включать, тогда ключ exclude должен позволить внести в черный список плагин , который в противном случае использовался бы в зависимости от предоставленных вами целевых сред. "exclude": ["@babel/plugin-transform-regenerator"].

Вопрос на заметку Аскера

Это решило мою проблему. Я достиг желаемого результата с:

{
  "presets": [
    [
      "next/babel",
      {
        "preset-env": {
          "targets": {
            "chrome": "73",
            "node": "11"
          }
        }
      }
    ]
  ]
}

...