WU / 文档通用微前端
中文

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.zig
  • wu-cli/src/commands/doctor-remote.cjs
  • wu-cli/tests/doctor-policy.test.cjs
  • wu-cli/tests/doctor-remote-apps.test.cjs
  • wu-cli/tests/build-deploy.test.cjs
一起完善 WU

发现了问题?有新的想法?

你的使用体验能让 WU 变得更好。告诉我们遇到的问题,或支持项目的持续开发。