在K6测试中捆绑npm模块“ cheerio”

时间:2019-05-06 13:22:49

标签: npm k6

我正在尝试使用LoadImpact的K6框架创建一些测试,但是我努力按照其文档站点上的说明包括外部NPM模块。

在loadImpacts文档站点上,它们包括有关我所追求的目标的详细示例,这些模块使我能够从soap服务响应中解析xml。但是,我无法正常工作!现在,我是一名JavaScript新手,但是我已经编码很多年了,并且真的很想解决这个问题。 可以在这里找到:https://docs.k6.io/docs/modules#section-npm-modules 谁能得到这个工作?我需要在与Internet隔离的服务器上运行此文件,因此我完全依赖于创建软件包并传输所需的文件。

根据文档,这样创建一个包

-- bundle `cheerio` npm module
git clone git@github.com:cheeriojs/cheerio.git
npm install browserify index.js -s cheerio > cheerio.js

我的第一个问题:运行此命令时,我在文件夹中,同时创建了一个“ cheerio.js”文件,一个“ cheerio”文件夹和一个“ node_modules”文件夹。 我的“根”目录中的cheerio.js仅包含以下内容:

+ cheerio@0.22.0
+ index.js@0.0.3
+ browserify@16.2.3
updated 3 packages and audited 2829 packages in 2.221s
found 0 vulnerabilities

返回LoadImpacts示例,了解如何在k6 javascript中引用此程序包:

import cheerio from "./vendor/cheerio.js";
export default function() 
{
  const res = http.get("https://loadimpact.com/");
  const $ = cheerio.load(res.body);

这是什么文件,以及在browserify生成的结构中的哪里可以找到它?我试图将其更改为指向“ cheerio”文件夹中的“ index.js”或在“ cheerio / lib”中找到的cheerio.js。然后,我将收到有关cheerio.js中第一行的投诉,该行定义了找不到的“解析”变量: var parse = require("./parse'), 如果我将其更改为 var parse = require("./parse.js') 它继续抱怨缺少“ htmlparser2”,我也可以在此结构中找到它,但是似乎整个依赖项结构都无法正常工作。

任何人都可以给我一些指导,指导他们如何创建具有cheerio依赖项的browserify软件包,以及如何/需要将其复制到我的k6项目以使其像在loadImpact网站上那样工作。

1 个答案:

答案 0 :(得分:0)

为此,k6文档肯定需要澄清,我稍后会做。当前提到的vendor文件夹没有什么特别的,文档只是缺少将浏览器生成的cheerio.jsxml2js.js文件复制到新的{{1} }文件夹中的文件。

目前,我将尝试提供有关如何以更简单的方式实现相同目标的简化说明:

  1. 创建一个新的空文件夹,然后在终端中进入
  2. 在此处运行vendor(忽略有关缺少npm install browserify cheerio或说明的npm警告)
  3. 在该文件夹中运行package.json
  4. 文件夹根目录中生成的./node_modules/.bin/browserify ./node_modules/cheerio/ -s cheerio > cheerio.js文件应该是您从k6脚本导入的文件:
cheerio.js

对于单个npm库应该就是这样。

如果您需要使用多个npm软件包,最好花一些时间将它们捆绑在一个浏览器化的import http from "k6/http"; import cheerio from "./cheerio.js"; export default function () { const res = http.get("https://loadimpact.com/"); const $ = cheerio.load(res.body); console.log($('head title').text()) } 文件中。例如,如果您同时需要k6文档中提到的.jscheerio库,则可以执行以下操作:

  1. 创建一个新的空文件夹
  2. 在其中添加类似以下xml2js的文件:

    package.json

    当然,如果您需要与{ "name": "k6-npm-libs-demo", "version": "0.0.1", "description": "just a simple demo of how to use multiple npm libs in k6", "main": "npm-main.js", "dependencies": {}, "devDependencies": { "browserify": "*", "cheerio": "*", "xml2js": "*" }, "scripts": { "install": "./node_modules/.bin/browserify npm-main.js -s npmlibs > vendored-libs.js" }, "author": "", "license": "ISC" } cheerio不同的库,则需要调整xml2js选项。

  3. 添加这样的devDependencies文件(同样,根据需要调整库):

    npm-main.js
  4. 在终端中打开该文件夹,然后运行exports.xml2js = require('xml2js'); exports.cheerio = require('cheerio'); 。这将导致在文件夹的根目录中创建一个npm install文件,您可以在k6中使用它,如下所示:

    vendored-libs.js
相关问题