diff --git a/.changeset/dirty-pianos-learn.md b/.changeset/dirty-pianos-learn.md new file mode 100644 index 00000000000..a4525d24214 --- /dev/null +++ b/.changeset/dirty-pianos-learn.md @@ -0,0 +1,5 @@ +--- +'@module-federation/node': patch +--- + +fix(node): delete server module cache if hot reload diff --git a/packages/node/src/utils/hot-reload.ts b/packages/node/src/utils/hot-reload.ts index f350a6a3e4c..0297d069d5a 100644 --- a/packages/node/src/utils/hot-reload.ts +++ b/packages/node/src/utils/hot-reload.ts @@ -141,17 +141,7 @@ export const performReload = async ( const req = getRequire(); const gs = new Function('return globalThis')(); - const entries: string[] = gs.entryChunkCache || []; - - if (!gs.entryChunkCache) { - Object.keys(req.cache).forEach((key) => { - if (requireCacheRegex.test(key)) { - decache(key); // Use decache here - } - }); - } else { - gs.entryChunkCache.clear(); - } + const entries: Set = gs.entryChunkCache || new Set(); //@ts-ignore gs.__FEDERATION__.__INSTANCES__.map((i: any) => { @@ -172,13 +162,18 @@ export const performReload = async ( globalThis.moduleGraphDirty = false; globalThis.mfHashMap = {}; - for (const entry of entries) { - decache(entry); - } - - //reload entries again - for (const entry of entries) { - await getRequire()(entry); + if (!entries) { + Object.keys(req.cache).forEach((key) => { + if (requireCacheRegex.test(key)) { + decache(key); // Use decache here + } + }); + } else { + for (const entry of entries) { + decache(entry); + //reload entries again + await getRequire()(entry); + } } return true;