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