webstorm 里运行 k6 脚本报“command not found”是因为 k6 二进制路径未加入系统 path,需在 shell 配置文件中导出路径(如 macos 的 ~/.zshrc 加 export path="/usr/local/bin:$path"),或通过 webstorm terminal 设置 shell path 强制加载;也可在 package.json 中定义 npm script 伪装调用,或创建 shell script 运行配置指定 k6 绝对路径执行。

WebStorm 里直接运行 k6 script.js 会报 command not found?
不是 WebStorm 不支持,而是它默认没把 k6 命令加进 PATH。WebStorm 的终端和运行配置都继承系统 shell 环境,但如果你用的是 nvm、fnm 或 Chocolatey 安装的 k6,它的二进制路径大概率不在默认 PATH 里。
验证方法:在 WebStorm 终端里执行 which k6(macOS/Linux)或 where k6(Windows),如果没输出,说明命令不可见。
- macOS/Linux:检查
~/.zshrc或~/.bash_profile是否导出了k6所在目录(比如export PATH="/usr/local/bin:$PATH") - Windows(Chocolatey):确认
C:\ProgramData\chocolatey\bin在系统 PATH 中,且 WebStorm 是重启后启动的(否则不读新 PATH) - 偷懒但有效:在 Settings → Tools → Terminal → Shell path 中填
/usr/bin/env zsh -i(macOS)或cmd.exe /k "set PATH=%PATH%;C:\ProgramData\chocolatey\bin"(Windows)
怎么在 WebStorm 里像跑 npm 脚本一样点一下就执行 k6?
WebStorm 不原生识别 k6,但你可以把它“伪装”成一个 npm 脚本——只要 package.json 里有对应条目,就能双击运行,还能复用输出面板、错误跳转、保存为永久配置等全部能力。
- 在
package.json的scripts字段里加一条:"k6:api": "k6 run ./tests/api-test.js" - 右键
package.json→ Show npm Scripts,找到k6:api双击即可运行 - 想传参(比如改虚拟用户数):编辑该脚本为
"k6:api": "k6 run --vus 50 --duration 60s ./tests/api-test.js" - 注意:WebStorm 会把整个命令当字符串交给 shell 执行,所以参数写法必须符合你本地
k6CLI 的要求(不是所有版本都支持--vus,老版本要用-u)
创建独立的 Node.js 运行配置来执行 k6 脚本?
可以,但别选 “Node.js” 类型——k6 不是 Node.js 应用,它是 Go 写的独立二进制,强行用 Node.js 配置会卡在找不到入口文件或报错 Cannot find module 'k6'。
正确做法是建一个 “JavaScript Debug” 或 “Node.js” 配置,但把工作逻辑换成调用 shell 命令:
- Run → Edit Configurations → + → Templates → Shell Script
- Script path 填绝对路径,比如
/usr/local/bin/k6(macOS)或C:\ProgramData\chocolatey\bin\k6.exe(Windows) - Parameters 填
run ./tests/api-test.js(路径相对于 Working directory) - Working directory 设为项目根目录,确保
./tests/api-test.js能被正确解析 - 勾选 “Allow parallel run”,方便同时跑多个不同场景的 k6 脚本
k6 脚本里用 import 报错 SyntaxError: Cannot use import statement outside a module?
这是 Node.js 解析器在干扰——WebStorm 默认用 Node.js 执行 JS 文件,但它看到 import 就试图按 CommonJS 模式加载,而 k6 脚本必须由 k6 自己的运行时解释。
根本原因:你误用了 “Node.js” 运行配置去执行 k6 脚本,而不是调用 k6 命令本身。
- 删掉所有用 “Node.js” 类型配置运行
.js文件的尝试 -
k6脚本里的import是 k6 运行时支持的 ES Module 语法,和 Node.js 无关;只要最终是k6 run xxx.js启动,就完全合法 - 如果非要编辑时有类型提示,可在 WebStorm 中将
.js文件关联到 JavaScript Language Level: ECMAScript 2022,并关闭 “Node.js Core library” 的自动注入
import { check } from 'k6' 这类语句不会被识别为有效模块——这不是配置问题,是工具链边界。真正要盯住的,永远是那一行 k6 run 是否能从终端里干净执行。











