fix(deploy): 模块挂载回归 §5.3 zone 路径制(B 方案)+ hello 页面 ESM 修复(T3) - #61
Merged
Conversation
- moduleWranglerConfig:模块 routes 改 <domain>/m/<id>/*(无 custom_domain 标记 = zone 路径路由),与 core 主域同域按前缀分发;core 主域 custom_domain 保留不动 - smokeCheck:删 moduleSubdomain 参数与子域分支,模块探测回归 <baseUrl>/m/<id>/api/health(domain/workers.dev 两模式同形) - steps:删 moduleSubdomain flag;步骤④日志成真(绑 <domain>/m/<id>/* 路由); http 注入口标注 @internal 仅测试用(生产走真实 smokeCheck) - 修正失实注释:10405 背景(OAuth 对 zone 路由授权不足,需 API Token 带 Zone: Workers Routes Edit);删「绝对 URL 头重写」虚构表述 - assemble 抽 buildModuleSdkAssets(IIFE + ESM 双产物,供页面 ESM 具名导入) Ref #59 Signed-off-by: HandyWote <huangyinghui01@corp.netease.com>
- three-way-consistency:同一 config 下「registry entry 装载点 == wrangler route 路由点 == 步骤⑨冒烟探测点」host+前缀一致;core 主域 custom_domain、模块 zone 路径路由形态整对象断言(修复前 HEAD 上红) - smoke.test.ts:真实 smokeCheck + stub fetch,domain/workers.dev 两模式 URL 整数组断言 + ok/detail 行为断言(响应体缺 ok、HTTP 503、不可达) - assemble.test.ts:模块 routes 改整对象 toEqual;新增 buildModuleSdkAssets 回归测(ESM 产物可 import 具名 createModuleSDK,IIFE 无顶层 export) Ref #59 Signed-off-by: HandyWote <huangyinghui01@corp.netease.com>
装配产物中 sdk/module-sdk.js 是 esbuild IIFE,无顶层 export——浏览器 ESM 具名导入 报 SyntaxError、脚本死、握手失败(线上实锤)。module-sdk.esm.js 是同包二次打包的 ESM 产物(assemble.ts 已生成),具名 createModuleSDK 可用;测试断言同步。 Ref #59 Signed-off-by: HandyWote <huangyinghui01@corp.netease.com>
- 部署凭证以 API Token 为主路径:Account: Workers Scripts/D1/R2 Edit; Zone(config.domain 所属 zone): Workers Routes Edit - 补 10405 背景:wrangler login 的 OAuth 对 zone 路由授权不足,必须用 API Token - 注记待真机验证的假设:zone 路由 pattern 直接用 config.domain 全值, zone 解析交由 wrangler 按 pattern 匹配(多级子域推不出 zone,故不引入 zone 字段) Ref #59 Signed-off-by: HandyWote <huangyinghui01@corp.netease.com>
This was referenced Sep 8, 2026
HandyWote
added a commit
that referenced
this pull request
Sep 8, 2026
真机首次部署被 wrangler schema 拦下:routes[] 元素形态是
{ pattern, custom_domain, zone_id | zone_name, ... },zone 路由无
zone_id/zone_name 直接拒收(#61 的测试断言了不合法形态——T5 假
Wrangler 类盲区实证)。修法:
- assemble.ts:core/module 两个配置生成器接受 zoneName,routes 对象
带 zone_name(wrangler 按 zone 名解析,无需 zone_id)
- steps.ts:部署前经 API 逐级上溯探测 zone(resolveZone 注入口),
探测失败硬报错(zone 路由必需);zone 结果复用给 DNS 自愈步骤,
避免二次 API 调用
- 测试:assemble/三方一致性断言同步 zone_name 形态;steps 测试全面
改用 configOverride(隔离部署者本地 domain 状态——此前 domain 填充
导致非 domain 用例误走 zone 探测路径,一并修掉)
Signed-off-by: huangyinghui <18666119673@163.com>
HandyWote
added a commit
that referenced
this pull request
Sep 8, 2026
真机首次部署被 wrangler schema 拦下:routes[] 元素形态是
{ pattern, custom_domain, zone_id | zone_name, ... },zone 路由无
zone_id/zone_name 直接拒收(#61 的测试断言了不合法形态——T5 假
Wrangler 类盲区实证)。修法:
- assemble.ts:core/module 两个配置生成器接受 zoneName,routes 对象
带 zone_name(wrangler 按 zone 名解析,无需 zone_id)
- steps.ts:部署前经 API 逐级上溯探测 zone(resolveZone 注入口),
探测失败硬报错(zone 路由必需);zone 结果复用给 DNS 自愈步骤,
避免二次 API 调用
- 测试:assemble/三方一致性断言同步 zone_name 形态;steps 测试全面
改用 configOverride(隔离部署者本地 domain 状态——此前 domain 填充
导致非 domain 用例误走 zone 探测路径,一并修掉)
Signed-off-by: huangyinghui <18666119673@163.com>
HandyWote
added a commit
that referenced
this pull request
Sep 9, 2026
真机首次部署被 wrangler schema 拦下:routes[] 元素形态是
{ pattern, custom_domain, zone_id | zone_name, ... },zone 路由无
zone_id/zone_name 直接拒收(#61 的测试断言了不合法形态——T5 假
Wrangler 类盲区实证)。修法:
- assemble.ts:core/module 两个配置生成器接受 zoneName,routes 对象
带 zone_name(wrangler 按 zone 名解析,无需 zone_id)
- steps.ts:部署前经 API 逐级上溯探测 zone(resolveZone 注入口),
探测失败硬报错(zone 路由必需);zone 结果复用给 DNS 自愈步骤,
避免二次 API 调用
- 测试:assemble/三方一致性断言同步 zone_name 形态;steps 测试全面
改用 configOverride(隔离部署者本地 domain 状态——此前 domain 填充
导致非 domain 用例误走 zone 探测路径,一并修掉)
Signed-off-by: huangyinghui <18666119673@163.com>
HandyWote
added a commit
that referenced
this pull request
Sep 9, 2026
真机首次部署被 wrangler schema 拦下:routes[] 元素形态是
{ pattern, custom_domain, zone_id | zone_name, ... },zone 路由无
zone_id/zone_name 直接拒收(#61 的测试断言了不合法形态——T5 假
Wrangler 类盲区实证)。修法:
- assemble.ts:core/module 两个配置生成器接受 zoneName,routes 对象
带 zone_name(wrangler 按 zone 名解析,无需 zone_id)
- steps.ts:部署前经 API 逐级上溯探测 zone(resolveZone 注入口),
探测失败硬报错(zone 路由必需);zone 结果复用给 DNS 自愈步骤,
避免二次 API 调用
- 测试:assemble/三方一致性断言同步 zone_name 形态;steps 测试全面
改用 configOverride(隔离部署者本地 domain 状态——此前 domain 填充
导致非 domain 用例误走 zone 探测路径,一并修掉)
Signed-off-by: huangyinghui <18666119673@163.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联
Ref #59(issue 主体 + T3 修复)。真源:docs/PRODUCT_SPEC.md §5.3 单域名路径路由。
待定案①处理:config.ts 不加 zone 字段(按定案)——模块 zone 路由 pattern 直接用
config.domain全值,zone 解析交由 wrangler 按 pattern 匹配;此假设已在 README 注明「待真机验证」。改动
deploy/cloudflare/src/assemble.ts<domain>/m/<id>/*(无custom_domain标记);core 主域custom_domain:true保留不动;修正 10405 失实注释(OAuth 对 zone 路由授权不足)与「绝对 URL 头重写」虚构表述;抽buildModuleSdkAssets(IIFE + ESM 双产物)deploy/cloudflare/src/smoke.tsmoduleSubdomain参数与子域分支,模块探测回归<baseUrl>/m/<id>/api/healthdeploy/cloudflare/src/steps.tsmoduleSubdomainflag;步骤④日志改回「绑<domain>/m/<id>/*路由(zone 路径)」;http:注入口标注@internal仅测试用modules/hello/src/index.ts./sdk/module-sdk.esm.js(T3:线上sdk.js为 IIFE 无顶层 export,ESM 具名导入报 SyntaxError)three-way-consistency.test.ts(三方一致性红测,修复前 HEAD 上红)、smoke.test.ts(真实smokeCheck两模式 URL/行为断言)、assemble.test.ts(routes 整对象toEqual+ ESM 产物可具名 import 回归测)deploy/cloudflare/README.md验收对照表(issue #59)
unself.demo.handywote.top/m/hello/*三类 200smoke.test.ts断言两模式 URL 整数组;steps.test.ts输出✓ module:hello → https://x.example/m/hello/api/healththree-way-consistency.test.ts修复前 2 用例红(子域 custom_domain)→ 修后绿pnpm -r typecheck && pnpm -r test && pnpm -r build全绿测试
T3 回归测为行为级:真实 esbuild 构建 ESM 产物后动态 import,断言
typeof createModuleSDK === 'function'且导出集为createD1Storage/createModuleSDK/decodeJwtPayload/verifyModuleToken;IIFE 产物断言无顶层 export。备注
config.ts/unself.config.jsonc未改(待定案①按「不加 zone 字段」执行)。