【问题标题】:How to use xmlhttprequest or xhr2 with k6如何在 k6 中使用 xmlhttprequest 或 xhr2
【发布时间】:2021-01-18 15:25:47
【问题描述】:

我想将库 xmlhttprequest 或 xhr2 与 K6 性能测试工具一起使用。

由于 k6 不支持 node 模块,我收到以下错误

GoError: Module specifier "xhr2" was tried to be loaded as remote module by prepending "https://" to it, which didn't work. If you are trying to import a nodejs module, this is not supported as k6 is _not_ nodejs based. Please read https://k6.io/docs/using-k6/modules for more information. Remote resolution error: "Get "https://xhr2": dial tcp: lookup xhr2: no such host" at reflect.methodValueCall (native)

有没有办法可以在本地下载这些库并使用它们。感谢您的帮助。

【问题讨论】:

  • 答案是否定的。但是有什么特别的原因要使用它们而不是内置的 k6 HTTP 库 k6.io/docs/javascript-api/k6-http 吗?
  • 我有一些带有 xmlhttprequest 的代码,我想在 k6 中重用它们。当我尝试将其转换为 k6 http 库时出现错误

标签: javascript xmlhttprequest k6


【解决方案1】:

目前在 k6 中发送 HTTP 请求的唯一方法是使用内置的 k6/http 模块。这与XMlHTTPRequest 和“xhr2”都完全不兼容,因为显而易见的原因,它实现了 nodejs 使用 nodejs API,而不是 k6 API。

作为一种解决方法,我建议您只实现您正在使用的部分并使用它。我希望您不会使用库支持的所有功能,所以它不应该是那么多代码。这有可能会导致复杂性爆炸,特别是如果您尝试映射一些在 k6 中不太支持或根本不支持的功能,因此我建议您尝试弄清楚您使用的内容是否可以转换为 k6(如果有的话)。例如,XMLHTTPRequest(来自我的快速阅读,因为我已经很多年没有使用它了)默认情况下会异步发送请求,但这完全不被 k6 支持,因为它仍然没有event loop。有a "workaround" for that as well,但我没有尝试让它工作,它就像有一个事件循环一样,但实际上它仍然是所有 JS 代码,所以你不会并行执行 2-3 个请求。

因此,您很可能无法使用相同的代码并从 k6 获得完全相同的行为。

我认为,如果您想继续使用这些库继续编写并在 nodejs/浏览器中运行相同的代码,上述内容才有意义。否则,完全迁移到“k6/http”模块可能会快很多,并且会减少麻烦。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    相关资源
    最近更新 更多