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

k6无法从其他文件导入函数:moduleSpecifier找不到本地文件

导入错误原因及解决方法

核心原因分析

1. k6不兼容Node.js专属依赖

@google-cloud/secret-manager是Node.js环境专属的第三方包,而k6的运行环境基于Go的V8引擎,完全不支持Node.js核心API(如fs、net)及这类Node专属包。这不仅会引发导入路径解析失败,即便路径正确,后续运行也会直接报错。

2. 导入路径未指定文件扩展名

k6解析ES模块导入时,不会自动补全.ts或.js扩展名。你当前的导入语句import { getCloudflareToken } from '../GoogleCloud';缺少.ts后缀,导致k6无法定位目标文件。

3. TypeScript配置缺失

k6运行TS文件需要配套的tsconfig.json且需符合k6的TS规范。当前项目无相关配置,可能导致k6无法正确解析TS文件的模块路径。

4. 脚本语法错误(额外问题)

原signup.ts中const email = test@email.com;缺少字符串引号,属于语法错误,会引发后续运行异常。

分步解决方法

第一步:修复导入路径

修改tests/signup.ts中的导入语句,添加.ts扩展名:

import { getCloudflareToken } from '../GoogleCloud.ts';

第二步:替换Node.js专属依赖的使用方式

由于k6无法运行@google-cloud/secret-manager,需换一种方式获取Cloudflare Token:

  • 方案1:环境变量传入(推荐)

    1. 本地或CI环境设置环境变量:
      # Linux/macOS
      export CF_TOKEN="你的Cloudflare Token"
      # Windows PowerShell
      $env:CF_TOKEN="你的Cloudflare Token"
      
    2. 脚本中读取环境变量:
      export default function () {
        const cf_token = __ENV.CF_TOKEN;
        // 后续业务逻辑
      }
      
  • 方案2:k6自定义扩展(复杂场景)
    若必须在运行时从Secret Manager获取Token,可开发k6的Go扩展集成Google Secret Manager SDK,但需具备Go语言开发能力,适合团队复杂场景。

第三步:添加k6兼容的tsconfig.json

在项目根目录创建tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2019",
    "module": "ESNext",
    "moduleResolution": "node",
    "lib": ["ES2019"],
    "allowJs": true,
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "types": ["k6"]
  },
  "include": ["tests/**/*", "*.ts"]
}

第四步:修复脚本语法错误并验证运行

修改后的tests/signup.ts示例:

import http from 'k6/http';
import { sleep, check } from 'k6';

export default function () {
  const email = 'test@email.com'; // 补全字符串引号
  const cf_token = __ENV.CF_TOKEN;
  
  // 示例请求逻辑
  const res = http.get('https://your-target-api.com', {
    headers: { 'Authorization': `Bearer ${cf_token}` }
  });
  check(res, { 'status is 200': (r) => r.status === 200 });
  
  sleep(1);
}

运行脚本:

k6 run tests/signup.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:15:31