From ec6b566513ea9850b1cedf656fe962016afd0da8 Mon Sep 17 00:00:00 2001 From: 2heal1 Date: Fri, 26 Sep 2025 19:27:46 +0800 Subject: [PATCH 1/2] fix(enhanced): consume shared module cache issue --- .changeset/metal-keys-check.md | 5 +++++ .../src/lib/sharing/ConsumeSharedPlugin.ts | 14 ++++++++++++-- packages/enhanced/test/unit/sharing/utils.ts | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 .changeset/metal-keys-check.md diff --git a/.changeset/metal-keys-check.md b/.changeset/metal-keys-check.md new file mode 100644 index 00000000000..7cd9895bb60 --- /dev/null +++ b/.changeset/metal-keys-check.md @@ -0,0 +1,5 @@ +--- +'@module-federation/enhanced': patch +--- + +fix(enhanced): Mark all exports as provided, to avoid webpack's export analysis from marking them as unused since we copy buildMeta diff --git a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts index 7e5d927a70f..3bf3f3433a5 100644 --- a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts +++ b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts @@ -1,6 +1,6 @@ /* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy */ 'use strict'; @@ -734,8 +734,18 @@ class ConsumeSharedPlugin { ) { // Copy buildMeta and buildInfo following webpack's DelegatedModule pattern: this.buildMeta = { ...delegateData.buildMeta }; // This ensures ConsumeSharedModule inherits ESM/CJS detection (exportsType) and other optimization metadata + // @ts-ignore + console.log( + module.request, + fallbackModule.buildMeta, + fallbackModule.buildInfo, + ); module.buildMeta = { ...fallbackModule.buildMeta }; module.buildInfo = { ...fallbackModule.buildInfo }; + // Mark all exports as provided, to avoid webpack's export analysis from marking them as unused since we copy buildMeta + compilation.moduleGraph + .getExportsInfo(module) + .setUnknownExportsProvided(); } } } diff --git a/packages/enhanced/test/unit/sharing/utils.ts b/packages/enhanced/test/unit/sharing/utils.ts index 6240f9cc19b..bdf1734b068 100644 --- a/packages/enhanced/test/unit/sharing/utils.ts +++ b/packages/enhanced/test/unit/sharing/utils.ts @@ -202,6 +202,9 @@ export const createMockCompilation = () => { const mockModuleGraph = { getModule: jest.fn(), getOutgoingConnections: jest.fn().mockReturnValue([]), + getExportsInfo: jest.fn().mockReturnValue({ + setUnknownExportsProvided: jest.fn(), + }), }; // Cast to any to allow flexible property addition From 0267b1260a37c3c8ce334f27436d59e1888d7db1 Mon Sep 17 00:00:00 2001 From: 2heal1 Date: Fri, 26 Sep 2025 20:40:16 +0800 Subject: [PATCH 2/2] chore: remove log --- packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts index 3bf3f3433a5..3c6ac01f756 100644 --- a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts +++ b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts @@ -734,12 +734,6 @@ class ConsumeSharedPlugin { ) { // Copy buildMeta and buildInfo following webpack's DelegatedModule pattern: this.buildMeta = { ...delegateData.buildMeta }; // This ensures ConsumeSharedModule inherits ESM/CJS detection (exportsType) and other optimization metadata - // @ts-ignore - console.log( - module.request, - fallbackModule.buildMeta, - fallbackModule.buildInfo, - ); module.buildMeta = { ...fallbackModule.buildMeta }; module.buildInfo = { ...fallbackModule.buildInfo }; // Mark all exports as provided, to avoid webpack's export analysis from marking them as unused since we copy buildMeta