You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行k6性能测试脚本时遭遇模块找不到错误求助

解决k6导入模块找不到的问题

1. 修正导入路径的文件扩展名

k6的模块解析要求明确指定.js扩展名,将script.js中的导入语句修改为:

import { generateConsumer } from './utils/generateConsumer.js';

原代码省略了.js,导致k6无法定位到目标文件。

2. 处理@faker-js/faker的兼容性问题

k6基于Go runtime,不支持直接使用标准npm包(如@faker-js/faker),可通过以下两种方式解决:

替代方案:用k6内置功能生成唯一测试数据

无需依赖第三方包,直接用k6内置逻辑生成确保唯一性的用户数据,修改utils/generateConsumer.js:

export function generateConsumer() {
  const firstNames = ['Alice', 'Bob', 'Charlie', 'Diana', 'Eve', 'Frank'];
  const lastNames = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Miller'];

  return {
    firstName: firstNames[Math.floor(Math.random() * firstNames.length)],
    lastName: lastNames[Math.floor(Math.random() * lastNames.length)],
    // 用VU编号+时间戳生成全局唯一邮箱,避免被目标应用关联旧用户
    email: `test-consumer-${__VU}-${Date.now()}@test-domain.com`,
  };
}

这种方式既解决了依赖兼容性问题,又完全满足你“每个请求生成新用户”的测试场景。

进阶方案:用xk6构建带faker的自定义k6二进制

如果必须使用faker工具,需要用xk6构建集成faker的k6版本:

  1. 安装xk6:go install go.k6.io/xk6/cmd/xk6@latest
  2. 构建带faker的k6二进制:xk6 build --with github.com/szkiba/xk6-faker@latest
  3. 使用构建好的二进制运行脚本:./k6 run script.js
    此时generateConsumer.js可使用k6兼容的faker:
import { faker } from 'k6/x/faker';

export function generateConsumer() {
  return {
    firstName: faker.firstName(),
    lastName: faker.lastName(),
    email: faker.email(),
  };
}

3. 确保运行目录正确

执行k6命令时,必须在项目根目录(包含script.js和utils文件夹的目录)运行:

k6 run script.js

若在子目录运行,相对路径会失效,导致模块找不到。

4. Grafana Cloud k6适配

后续在Grafana账号执行测试时,建议用k6 pack命令将所有依赖打包成单个文件:

k6 pack script.js > packed-script.js

上传打包后的packed-script.js到Grafana Cloud,可避免路径依赖问题。

内容的提问来源于stack exchange,提问作者Kpizzle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:51:13