通过 CLI 创建、复用 uni-app x 蒸汽模式 App 的 DevTools 调试会话,并在不打开 DevTools 窗口的情况下读取或修改应用的调试数据(DOM、样式、页面、Network、Storage 等),适用于无人值守调试、自动化脚本等场景。
需先安装
uniappx-vapor-devtools插件,详见插件安装。
app-android、app-ios、app-harmony。start、list 返回。后续所有操作都用 --port 指定会话。DevTools 依赖 dcloud.uniappx-vapor-devtools 插件。HBuilder V 会在需要时通过 IDE 的插件安装交互检查并安装该插件;CLI 不提供安装插件的能力,请确保插件已安装后再执行后续命令。
cli uniappx-vapor-devtools --command list
返回结果中的 projectPath、platform、iosTarget、deviceId、deviceName 可用于识别会话。若已有与当前调试目标匹配的会话,直接复用其 port 即可。
没有可复用的会话时新建一个(创建后自动分配端口)。先用 设备列表 枚举设备:
| 目标 | devices list --platform 取值 |
|---|---|
| Android | android |
| iOS 真机 | ios-iPhone |
| iOS 模拟器 | ios-simulator |
| HarmonyOS | app-harmony |
cli uniappx-vapor-devtools --command start \
--project <项目绝对路径> \
--platform <app-android|app-ios|app-harmony> \
--deviceId <设备ID> \
[--iosTarget <device|simulator>] \
[--deviceName <名称>]
--project 必须是绝对路径;--iosTarget 仅 app-ios 使用。port 和 runtimeInfo,后续操作都要用到 port。127.0.0.1。cli uniappx-vapor-devtools --command status --port <端口>
| 返回 | 处理 |
|---|---|
connected | 可以直接执行数据操作 |
disconnected | 应用尚未连接或已断开,请参考 重启应用 重新拉起后再重试 |
SESSION_NOT_FOUND 或其它错误 | 停止任务 |
cli uniappx-vapor-devtools --command stop --port <端口>
若会话是复用已有的,请勿关闭,以免影响其它使用方。返回 SESSION_NOT_FOUND 说明会话已不存在,无需处理。
以下命令均使用已选定的 {port}。
读取 DOM 和样式,并支持修改属性与样式。
cli uniappx-vapor-devtools --command dom --port <端口> --action get-document --depth 2
cli uniappx-vapor-devtools --command dom --port <端口> --action describe-node --node <节点ID> --depth -1
cli uniappx-vapor-devtools --command dom --port <端口> --action computed-style --node <节点ID>
cli uniappx-vapor-devtools --command dom --port <端口> --action box-model --node <节点ID>
cli uniappx-vapor-devtools --command dom --port <端口> --action set-attribute --node <节点ID> --name <属性名> --value <值>
cli uniappx-vapor-devtools --command dom --port <端口> --action set-style --node <节点ID> --name <样式名> --value <值>
| 参数 | 说明 |
|---|---|
--action | 操作:get-document / describe-node / computed-style / box-model / set-attribute / remove-attribute / set-style |
--node | DOM 节点 ID,除 get-document 外必填 |
--depth | 子树深度,默认 1,-1 为完整子树,仅 get-document、describe-node 使用 |
--name / --value | 属性名/样式名与其值 |
uniProperties、uniComponent、uniSourceFile 等扩展字段,便于判断页面、自定义组件与普通 Element。set-style 修改行内样式,set-attribute、remove-attribute 修改属性。命令成功只表示 setter 已调用,不保证画面已刷新。截取指定 Element(dom)或整个页面(page)。
cli uniappx-vapor-devtools --command dom --port <端口> --action capture-screenshot \
--node <节点ID> --output <绝对png路径> [--overwrite]
cli uniappx-vapor-devtools --command page --port <端口> --action capture-screenshot \
--output <绝对png路径> [--full-page] [--overwrite]
| 参数 | 说明 |
|---|---|
--output | 截图输出文件的绝对路径,必填 |
--full-page | 开关参数,传入时截取完整页面,仅页面截图使用 |
--overwrite | 是否覆盖已有截图,默认 false |
截图固定为 PNG,单张上限 16 MiB。
页面跳转,仅供无头调用方使用。
cli uniappx-vapor-devtools --command page --port <端口> --action navigate --type navigateTo --url /pages/detail/detail?id=1
cli uniappx-vapor-devtools --command page --port <端口> --action navigate --type navigateBack --delta 1
| 参数 | 说明 |
|---|---|
--type | 跳转方式:navigateTo / redirectTo / switchTab / reLaunch / navigateBack |
--url | 页面路径,navigateTo、redirectTo、switchTab、reLaunch 必填,需以 / 开头 |
--delta | 返回页面层数,默认 1,仅 navigateBack 使用 |
采集并读取应用的网络请求。
cli uniappx-vapor-devtools --command network --port <端口> --action list
cli uniappx-vapor-devtools --command network --port <端口> --action get --request <请求ID>
cli uniappx-vapor-devtools --command network --port <端口> --action body --request <请求ID>
仅采集连接会话之后产生的
uni.request、uni.uploadFile、uni.downloadFile请求,最多保留最近 1000 条;UTS 插件直接发起的请求不会出现,应用重连后历史记录清空。
读取和修改应用的本地 Storage。
cli uniappx-vapor-devtools --command storage --port <端口> --action list
cli uniappx-vapor-devtools --command storage --port <端口> --action add-item --key <键名> --value <值> --value-type <string|number|boolean|null|array|object>
cli uniappx-vapor-devtools --command storage --port <端口> --action set-item --key <键名> --value <值>
cli uniappx-vapor-devtools --command storage --port <端口> --action remove-item --key <键名>
cli uniappx-vapor-devtools --command storage --port <端口> --action clear
CLI 不支持修改 key;Storage 的实时变化不会主动推送,需要最新数据时重新执行
list。
自定义组件 Props 目前仅支持读取,不支持修改,可通过 dom --action describe-node 返回的 uniComponent、uniComponentProps 字段读取。
| 错误码 | 含义 |
|---|---|
INVALID_ARGUMENT | 参数缺失或格式错误 |
SESSION_NOT_FOUND | 会话不存在或已关闭 |
SESSION_CLOSED | 会话在创建期间已关闭 |
LOCAL_NETWORK_ADDRESS_UNAVAILABLE | iOS 真机调试无可用局域网 IPv4 地址 |
DEVTOOLS_NOT_READY | Runtime 或无头客户端尚未就绪 |
CONNECTION_CHANGED | 操作期间 Runtime 连接发生变化 |
PAGE_NOT_FOUND | 当前没有可操作的页面 |
NODE_NOT_FOUND | 文档中不存在指定节点 |
NODE_NOT_ELEMENT | 指定节点不是 Element |
REQUEST_NOT_FOUND | Network 请求不存在或已淘汰 |
STORAGE_ITEM_ALREADY_EXISTS | 新增的 Storage key 已存在 |
STORAGE_ITEM_NOT_FOUND | 要修改的 Storage key 不存在 |
STORAGE_VALUE_INVALID | 新值无法按原类型解析 |
NAVIGATION_FAILED | 页面跳转失败 |
SCREENSHOT_FAILED | 平台截图或文件读取失败 |
SCREENSHOT_TOO_LARGE | PNG 超过 16 MiB |
OUTPUT_ALREADY_EXISTS | 目标文件已存在且未允许覆盖 |
REQUEST_TIMEOUT | 单次操作超过内部超时 |
PORT_FORWARD_FAILED | 设备端口转发失败或当前 Launcher 不支持 |
INTERNAL_ERROR | 未归类的插件或 Server 错误 |