重试插件为 Module Federation 提供强大的资源加载失败重试机制,当远程模块或资源加载失败时,自动进行重试以确保应用的稳定性。
插件配置已经简化。旧的 fetch 和 script 配置对象已被弃用:
retryTimes
numberretryDelay
numberdomains
string[]addQuery
boolean | ((context: { times: number; originalQuery: string }) => string)fetchOptions
RequestInitmanifestDomains
string[]mf-manifest.json 资源的域名轮换列表(优先级高于 domains)。当配置了 manifestDomains 时,插件在获取 mf-manifest.json 等清单资源的重试中,会优先按 manifestDomains 顺序进行域名切换;其他资源仍使用 domains。onRetry
({ times, domains, url, tagName }: { times?: number; domains?: string[]; url?: string; tagName?: string }) => voidtimes 重试次数,domains 域名列表,url 请求URL,tagName 资源类型onSuccess
({ domains, url, tagName }: { domains?: string[]; url?: string; tagName?: string; }) => voiddomains 域名列表,url 请求URL,tagName 资源类型onError
({ domains, url, tagName }: { domains?: string[]; url?: string; tagName?: string; }) => voiddomains 域名列表,url 请求URL,tagName 资源类型插件会在资源加载失败时自动进行重试,重试次数由 retryTimes 参数控制。例如:
retryTimes: 3 表示总共尝试 4 次(1次初始尝试 + 3次重试)retryDelay 毫秒当配置了 domains 参数时,插件会在重试时自动切换到下一个域名:
重试顺序:
cdn2.example.comcdn3.example.comcdn1.example.com通过 addQuery 参数可以在重试时添加查询参数,避免浏览器缓存影响:
也可以使用自定义函数:
插件提供了三个回调函数,让你可以监控重试过程:
回调函数参数说明:
times: 当前重试次数(从1开始)domains: 当前使用的域名列表url: 当前请求的URLtagName: 资源类型('fetch' 或 'script')domains 中的域名都指向相同的资源addQuery 时注意 CDN 的缓存策略插件使用标准的 Module Federation 错误码:
RUNTIME_008: 资源加载失败,触发重试机制