#load-testing #k6
#нагрузочное тестирование #k6
Вопрос:
Я пытаюсь использовать генератор javascript и yield
в k6.
Когда я пытаюсь запустить скрипт, я получаю эту ошибку:
Ошибка синтаксиса: …yield — это зарезервированное слово
Можно ли использовать yield в k6?
Ответ №1:
К сожалению, это изначально не поддерживается в виртуальной машине JavaScript, используемой k6 (goja). В соответствии с этим комментарием генераторы могут в конечном итоге поддерживаться, но в настоящее время это не планируется.
Тем не менее, вы можете обойти это, используя проект template-es6 для преобразования вашего скрипта в вариант ES5 с Babel, который может поддерживать многозадачность генераторов.
- Сначала локально клонируйте репозиторий Git template-es6.
- Установите все зависимости с
yarn add
помощью ornpm install
. - Добавить
@babel/plugin-transform-runtime
в список плагинов в.babelrc
. Это должно выглядеть так:
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": 3
}
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
- Установите плагин с
yarn add -D @babel/plugin-transform-runtime
помощью илиnpm install --save-dev @babel/plugin-transform-runtime
. - Измените
main.js
сценарий и установите любые другие зависимости, которые вам нужны. - Запустите
npm run-script webpack
, чтобы связать все. - Наконец, запустите скрипт с помощью k6
k6 run --compatibility-mode=base build/app.bundle.js
. Вы также можете запустить его без--compatibility-mode=base
, но поскольку он уже преобразован в сценарий ES5, вы можете избежать дополнительного преобразования, выполняемого k6, что повышает производительность и использование памяти.
Да, это не так просто, как хотелось бы, но разработчикам JavaScript это должно быть знакомо, и мы надеемся улучшить поддержку этих функций в будущем.