Doctor:本地与远程诊断
通过诊断码与 CI 退出状态检查文件、依赖及 HTTP 响应。
需要 WU CLI 1.2.0,应用 API 需要 WU Framework 4.0.0。请检查 wu --version 和项目依赖。
wu info
wu doctor --json
wu doctor --url https://example.com --route /guide/ --entry /apps/cart/entry.js --json
wu info 显示有效配置。本地 doctor 使用原生二进制;远程 doctor 使用 Node >=20,通过 GET 请求检查且不发送 cookie 或凭据。它不执行 JavaScript,也不修复文件。JSON 输出不含 ANSI 和更新提示。本地 JSON 模式不探测端口 3000,人类可读输出保留该旧检查。
| 代码 | 检查 |
|---|---|
WU_D000 |
未找到项目。 |
WU_D001 |
应用目录。 |
WU_D002 |
宿主入口或构建。 |
WU_D003 |
版本范围一致,并兼容目录中的目标 Framework 版本。 |
WU_D004 |
目录覆盖配置与工具链。 |
WU_D005 |
端口冲突。 |
WU_D006 |
公开输出中的敏感文件。 |
WU_D007 |
安全响应头与内联事件处理器。 |
WU_D008 |
HTTP 检查提示或本地响应。 |
WU_D009 |
多个应用使用的框架未列入 shared。 |
报告包含 schemaVersion: 1、tool、mode、ok、checks、problems 与 diagnostics,本地报告还包含 version。每条诊断包含 code、severity 与 message。一个类别可以产生多个发现。有警告时仍可返回 0,错误返回 1,无效选项或远程执行失败返回 2。
WU_D003 接受限定在目录中 Framework 主版本内的范围,例如 ^4.0.0、4.x、4.2.3 或 >=4 <5。它拒绝不兼容、格式错误、空范围或跨主版本的范围,例如 ^3 || ^4 和 >=4。Shell 与应用的声明必须一致;本地依赖保留目标路径检查。
远程扫描范围
--url 选择 HTTP 或 HTTPS。可重复使用 --route 指定页面,使用 --entry 指定模块或明确允许的外部源。--timeout 默认每次响应 5000 毫秒,包含响应体,允许范围为 100–30000。扫描仅跟踪静态引用,计算型导入和运行时发现的应用需要浏览器测试。
扫描限制为 32 个资源、40 次请求、每资源 3 次重定向、每响应 2 MiB 和总计 30 秒。未完成检查会报错。诊断区分 HTTP 状态、错误 MIME、内联 CSP、资源返回 HTML 回退、网络失败及跳过的外部源。大型站点应拆分为明确的扫描流程。
部署完整性
wu doctor --url https://example.com --integrity --pubkey keys/deploy.pub.json --json
--integrity 验证由 wu build --sign 创建的 wu-integrity.json,并比较已发布的签名、字节、MIME、CSP 和导入映射。--pubkey 接受可信 PEM 或 JWK。不指定时,内嵌密钥仅证明一致性,并产生 WU_INTEGRITY_UNPINNED。此模式有独立限制:最多 10000 个文件、32 MiB 清单及 64 MiB 文件;不使用普通扫描的 32 资源限制。
本地扫描检查 dist/ 中所有页面的 CSP;远程扫描还从 #wu-apps 发现应用。两者都不能替代在浏览器中挂载应用。签名和发布流程请参阅构建。
实现参考
wu-cli/src/commands/doctor.zigwu-cli/src/commands/doctor-remote.cjswu-cli/tests/doctor-policy.test.cjswu-cli/tests/doctor-remote-apps.test.cjswu-cli/tests/build-deploy.test.cjs