Ошибка синтаксиса при использовании yield в K6

#load-testing #k6

#нагрузочное тестирование #k6

Вопрос:

Я пытаюсь использовать генератор javascript и yield в k6.

Когда я пытаюсь запустить скрипт, я получаю эту ошибку:

Ошибка синтаксиса: …yield — это зарезервированное слово

Можно ли использовать yield в k6?

Ответ №1:

К сожалению, это изначально не поддерживается в виртуальной машине JavaScript, используемой k6 (goja). В соответствии с этим комментарием генераторы могут в конечном итоге поддерживаться, но в настоящее время это не планируется.

Тем не менее, вы можете обойти это, используя проект template-es6 для преобразования вашего скрипта в вариант ES5 с Babel, который может поддерживать многозадачность генераторов.

  1. Сначала локально клонируйте репозиторий Git template-es6.
  2. Установите все зависимости с yarn add помощью or npm install .
  3. Добавить @babel/plugin-transform-runtime в список плагинов в .babelrc . Это должно выглядеть так:
 {
  "presets": [
    [
      "@babel/preset-env",
      {
        "useBuiltIns": "usage",
        "corejs": 3
      }
    ]
  ],
  "plugins": [
    "@babel/plugin-transform-runtime"
  ]
}
 
  1. Установите плагин с yarn add -D @babel/plugin-transform-runtime помощью или npm install --save-dev @babel/plugin-transform-runtime .
  2. Измените main.js сценарий и установите любые другие зависимости, которые вам нужны.
  3. Запустите npm run-script webpack , чтобы связать все.
  4. Наконец, запустите скрипт с помощью k6 k6 run --compatibility-mode=base build/app.bundle.js . Вы также можете запустить его без --compatibility-mode=base , но поскольку он уже преобразован в сценарий ES5, вы можете избежать дополнительного преобразования, выполняемого k6, что повышает производительность и использование памяти.

Да, это не так просто, как хотелось бы, но разработчикам JavaScript это должно быть знакомо, и мы надеемся улучшить поддержку этих функций в будущем.