Skip to content

api ​

  • 类型: boolean | number | object
  • 默认值: false
  • 命令行终端: --api, --api.port, --api.host, --api.strictPort

监听端口并提供 API 服务,用于 UI 模式 或 浏览器服务。设为 true 时,默认端口为 51204,如果在浏览器模式下运行,则为 63315。

api.allowWrite 4.1.0+ ​

  • 类型: boolean
  • 默认值: true 表示未暴露在公共网络中,false 则表示已暴露

Vitest 服务器可以通过 API 保存测试文件或快照文件。这意味着任何能连接到 API 的人都可以在你的机器上运行任意代码。

在浏览器模式下,Vitest 通过接收来自浏览器的 WebSocket 连接来保存 测试注释、产物 和 快照。这使得任何能够连接到 API 的人都可以在你机器上的项目根目录(由 fs.allow 配置)内写入任意代码。此选项还会限制可间接写入文件的特权浏览器 API,例如通过 cdp() 直接访问 Chrome DevTools Protocol。

安全警告

Vitest 默认不会将 API 暴露到互联网,仅在 localhost 上监听。但如果 host 被手动暴露到网络,任何连接到它的人都可以在你的机器上运行任意代码,除非将 api.allowWrite 和 api.allowExec 设置为 false。

如果 host 设置为 localhost 或 127.0.0.1 以外的任何值,Vitest 会默认将 api.allowWrite 和 api.allowExec 设置为 false。这意味着任何写入操作(例如 在 UI 模式中修改代码)将不起作用。如果你了解安全风险,可以覆盖这些设置。

api.allowExec 4.1.0+ ​

  • 类型: boolean
  • 默认值: true 表示未暴露在公共网络中,false 则表示已暴露

允许通过 API 运行任意测试文件。适用于 UI 模式 中能够运行代码的交互元素(以及其背后的服务端代码)。在浏览器模式下,此选项还会限制间接的代码执行,包括在服务器上解析并处理 .snap 文件,以及通过 cdp() 访问原始 Chrome DevTools 协议。