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

K6读取图片文件失败求助:报Value is not an object: undefined错误

K6读取图片上传报错:Value is not an object: undefined

报错信息

Value is not an object: undefined
    at file:/tests/load/src/captainRegistration/uploadDocuments.js:7:23(39)
    at go.k6.io/k6/js.(*requireImpl).require-fm (native)
    at file:/tests/load/src/captainRegistration/captainSignUp.js:2:0(23)
    at go.k6.io/k6/js.(*requireImpl).require-fm (native)
    at file:/tests/load/test.js:4:0(34)  hint="script exception"

我的代码

import http from 'k6/http';
import { check, sleep } from "k6";
import { FormData } from 'https://jslib.k6.io/formdata/0.0.2/index.js';
import { open } from 'k6';
const imageFile = open('./src/captainRegistration/captain.png', 'b');
// Create form data for the file
let formData = new FormData();
formData.append('file', http.file(imageFile, 'captain.png', 'image/png'));

解决方法

  • 核对文件路径:open函数的路径是相对于k6运行时的工作目录,而非当前脚本文件目录。如果运行k6的命令是在/tests/load目录外执行的,路径需要调整。可以用绝对路径,或者切换到/tests/load目录后再运行k6。

  • 确认文件存在与权限:检查./src/captainRegistration/captain.png路径下是否真的存在文件,且当前用户有读取权限。

  • 调整代码作用域:k6的测试逻辑应放在default函数中执行,全局代码仅初始化一次。修改代码如下:

import http from 'k6/http';
import { check, sleep } from "k6";
import { FormData } from 'https://jslib.k6.io/formdata/0.0.2/index.js';
import { open } from 'k6';

export default function () {
  const imageFile = open('./src/captainRegistration/captain.png', 'b');
  // 先确认文件读取成功
  if (!imageFile) {
    throw new Error('无法读取图片文件');
  }
  
  let formData = new FormData();
  formData.append('file', http.file(imageFile, 'captain.png', 'image/png'));
  
  // 发送上传请求
  const res = http.post('你的上传接口URL', formData.body(), {
    headers: { ...formData.headers() },
  });
  
  check(res, { '上传成功': (r) => r.status === 200 });
  sleep(1);
}
  • 替换为原生multipart请求(无需FormData库):如果FormData库存在兼容性问题,直接用k6原生方式构造请求:
import http from 'k6/http';
import { check, sleep } from "k6";
import { open } from 'k6';

export default function () {
  const imageFile = open('./src/captainRegistration/captain.png', 'b');
  if (!imageFile) {
    throw new Error('无法读取图片文件');
  }
  
  const payload = {
    file: http.file(imageFile, 'captain.png', 'image/png'),
  };
  
  const res = http.post('你的上传接口URL', payload, {
    headers: { 'Content-Type': 'multipart/form-data' },
  });
  
  check(res, { '上传成功': (r) => r.status === 200 });
  sleep(1);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:58:21