在 K6 中使用 yield 时出现 SyntaxError
SyntaxError when using yield in K6
我正在尝试在 k6 中使用 javascript 生成器和 yield
。
当我尝试 运行 脚本时出现此错误:
SyntaxError: ...yield is a reserved word
可以在k6中使用yield吗?
不幸的是,这在 k6 使用的 JavaScript VM 中不受原生支持(goja). According to this comment 生成器最终可能会受到支持,但目前没有计划。
也就是说,您可以通过使用 template-es6 项目将您的脚本转换为带有 Babel 的 ES5 变体来解决此问题,它可以为生成器提供 polyfill 支持。
首先在本地克隆 template-es6 Git repo。
安装所有 yarn add
或 npm 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 开发人员应该熟悉它,我们希望将来改进对这些功能的支持。
我正在尝试在 k6 中使用 javascript 生成器和 yield
。
当我尝试 运行 脚本时出现此错误:
SyntaxError: ...yield is a reserved word
可以在k6中使用yield吗?
不幸的是,这在 k6 使用的 JavaScript VM 中不受原生支持(goja). According to this comment 生成器最终可能会受到支持,但目前没有计划。
也就是说,您可以通过使用 template-es6 项目将您的脚本转换为带有 Babel 的 ES5 变体来解决此问题,它可以为生成器提供 polyfill 支持。
首先在本地克隆 template-es6 Git repo。
安装所有
yarn add
或npm 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 开发人员应该熟悉它,我们希望将来改进对这些功能的支持。