在 K6 中使用 yield 时出现语法错误

Posted

技术标签:

【中文标题】在 K6 中使用 yield 时出现语法错误【英文标题】:SyntaxError when using yield in K6 【发布时间】:2021-01-22 10:47:25 【问题描述】:

我正在尝试在 k6 中使用 javascript 生成器和 yield

当我尝试运行脚本时出现此错误:

SyntaxError: ...yield 是保留字

在k6中可以使用yield吗?

【问题讨论】:

【参考方案1】:

不幸的是,k6 (goja) 使用的 JavaScript VM 本身不支持此功能。根据this comment,可能最终会支持生成器,但目前还没有计划。

也就是说,您可以通过使用 template-es6 项目将您的脚本转换为带有 Babel 的 ES5 变体来解决此问题,这可以为生成器提供 polyfill 支持。

    首先将 template-es6 Git repo 克隆到本地。

    使用yarn addnpm 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-runtimenpm 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 中使用 yield 时出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

在mysql查询中使用参数时出现mysql语法错误

为啥在我的 Postgres 函数中使用 IF 语句时出现语法错误?

keil5中编写代码时出现语法错误为什么无显示

在 MYSQL 中声明 FOREIGN KEYS 时出现语法错误(使用 innoDB)

在 PHP 中插入 MySQL 表时出现语法错误 [重复]

Oracle PL/SQL:在 SAMPLE 子句中使用变量时出现语法错误