diff --git a/.changeset/poor-squids-hide.md b/.changeset/poor-squids-hide.md new file mode 100644 index 000000000..26c73dbcc --- /dev/null +++ b/.changeset/poor-squids-hide.md @@ -0,0 +1,5 @@ +--- +"qiankun": patch +--- + +fix(qiankun): should remove internal cache of loadMicroApp while loading failed diff --git a/packages/qiankun/src/apis/loadMicroApp.ts b/packages/qiankun/src/apis/loadMicroApp.ts index 26b075258..bb8b61fb2 100644 --- a/packages/qiankun/src/apis/loadMicroApp.ts +++ b/packages/qiankun/src/apis/loadMicroApp.ts @@ -71,12 +71,21 @@ export function loadMicroApp( const parcelConfigObjectGetterPromise = loadApp(app, userConfiguration, lifeCycles); + let parcelConfigObjectGetter: ParcelConfigObjectGetter | undefined; + if (containerXPath) { const appContainerXPathKey = getContainerXPathKey(containerXPath); appConfigPromiseGetterMap.set(appContainerXPathKey, parcelConfigObjectGetterPromise); + try { + parcelConfigObjectGetter = await parcelConfigObjectGetterPromise; + } catch (e) { + appConfigPromiseGetterMap.delete(appContainerXPathKey); + throw e; + } } - return (await parcelConfigObjectGetterPromise)(container); + parcelConfigObjectGetter = parcelConfigObjectGetter || (await parcelConfigObjectGetterPromise); + return parcelConfigObjectGetter(container); }; if (!started) {