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

k6中如何使用导入的SharedArray对象?解决未定义报错

在k6中跨文件使用SharedArray的正确方式

k6支持跨文件使用SharedArray,但错误的导出/导入方式会触发「SharedArray is not defined」报错,以下是正确操作步骤和问题排查:

正确实现方式

1. 导出文件(path/to/file.js)

必须在模块**顶层(init阶段)**创建SharedArray并导出,SharedArray只能在init阶段实例化:

// path/to/file.js
import { SharedArray } from 'k6/data';

// 在init阶段创建SharedArray并导出
export const constant_with_shared_array = new SharedArray('my-data', function () {
    // 这里编写数据加载逻辑,比如读取本地文件、生成测试数据
    return [
        { id: 1, payload: 'test-content-1' },
        { id: 2, payload: 'test-content-2' }
    ];
});

2. 主文件导入使用

主文件直接导入后,即可在VU阶段的测试逻辑中使用:

import { constant_with_shared_array } from 'path/to/file.js';
import http from 'k6/http';

export const options = {
    vus: 10,
    duration: '30s'
};

export default function() {
    // 从SharedArray中随机选取一条数据
    const randomData = constant_with_shared_array[Math.floor(Math.random() * constant_with_shared_array.length)];
    const response = http.request('POST', 'https://your-api-domain.com/api/some', JSON.stringify(randomData));
    // 后续断言或其他逻辑...
}

「SharedArray is not defined」报错的常见原因

  • 在非init阶段创建SharedArray:SharedArray只能在模块顶层、非VU函数内部的init阶段实例化,若在导出文件的函数内创建会触发错误。
  • 未导入k6/data模块:导出文件必须显式导入SharedArray,部分k6版本不支持直接全局访问该对象。
  • 导入路径错误:若导入的文件路径不正确,会加载到未初始化SharedArray的文件,进而触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:25:14