Skip to content

Commit 2ad29a6

Browse files
authored
fix: webpackRequire.S has been attached with instance.shareScopeMap (#1962)
1 parent b129098 commit 2ad29a6

File tree

5 files changed

+35
-8
lines changed

5 files changed

+35
-8
lines changed

.changeset/shy-spoons-cheer.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@module-federation/webpack-bundler-runtime': patch
3+
'@module-federation/enhanced': patch
4+
'@module-federation/runtime': patch
5+
---
6+
7+
fix: remove duplicate init shareScopeMap
8+
fix: normalize schemas path
9+
fix: shared is loaded if it has lib attr

packages/enhanced/src/lib/container/ModuleFederationPlugin.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import type { Compiler, WebpackPluginInstance } from 'webpack';
99
import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';
10-
import isValidExternalsType from 'webpack/schemas/plugins/container/ExternalsType.check.js';
1110
import type { ModuleFederationPluginOptions } from './ModuleFederationPluginTypes';
1211
import SharePlugin from '../sharing/SharePlugin';
1312
import ContainerPlugin from './ContainerPlugin';
@@ -16,6 +15,12 @@ import checkOptions from '../../schemas/container/ModuleFederationPlugin.check';
1615
import schema from '../../schemas/container/ModuleFederationPlugin';
1716
import FederationRuntimePlugin from './runtime/FederationRuntimePlugin';
1817

18+
const isValidExternalsType = require(
19+
normalizeWebpackPath(
20+
'webpack/schemas/plugins/container/ExternalsType.check.js',
21+
),
22+
) as typeof import('webpack/schemas/plugins/container/ExternalsType.check.js');
23+
1924
const createSchemaValidation = require(
2025
normalizeWebpackPath('webpack/lib/util/create-schema-validation'),
2126
) as typeof import('webpack/lib/util/create-schema-validation');

packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,17 @@ const createSchemaValidation = require(
4848

4949
const validate = createSchemaValidation(
5050
//eslint-disable-next-line
51-
require('webpack/schemas/plugins/sharing/ConsumeSharedPlugin.check.js'),
52-
() => require('webpack/schemas/plugins/sharing/ConsumeSharedPlugin.json'),
51+
require(
52+
normalizeWebpackPath(
53+
'webpack/schemas/plugins/sharing/ConsumeSharedPlugin.check.js',
54+
),
55+
),
56+
() =>
57+
require(
58+
normalizeWebpackPath(
59+
'webpack/schemas/plugins/sharing/ConsumeSharedPlugin.json',
60+
),
61+
),
5362
{
5463
name: 'Consume Shared Plugin',
5564
baseDataPath: 'options',

packages/runtime/src/utils/share.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,18 @@ const findVersion = (
105105
}, 0) as string;
106106
};
107107

108+
const isLoaded = (shared: Shared) => {
109+
return Boolean(shared.loaded) || typeof shared.lib === 'function';
110+
};
111+
108112
function findSingletonVersionOrderByVersion(
109113
shareScopeMap: ShareScopeMap,
110114
scope: string,
111115
pkgName: string,
112116
): string {
113117
const versions = shareScopeMap[scope][pkgName];
114118
const callback = function (prev: string, cur: string): boolean {
115-
return !versions[prev].loaded && versionLt(prev, cur);
119+
return !isLoaded(versions[prev]) && versionLt(prev, cur);
116120
};
117121

118122
return findVersion(shareScopeMap, scope, pkgName, callback);
@@ -124,15 +128,16 @@ function findSingletonVersionOrderByLoaded(
124128
pkgName: string,
125129
): string {
126130
const versions = shareScopeMap[scope][pkgName];
131+
127132
const callback = function (prev: string, cur: string): boolean {
128-
if (versions[cur].loaded) {
129-
if (versions[prev].loaded) {
133+
if (isLoaded(versions[cur])) {
134+
if (isLoaded(versions[prev])) {
130135
return Boolean(versionLt(prev, cur));
131136
} else {
132137
return true;
133138
}
134139
}
135-
if (versions[prev].loaded) {
140+
if (isLoaded(versions[prev])) {
136141
return false;
137142
}
138143
return versionLt(prev, cur);

packages/webpack-bundler-runtime/src/initContainerEntry.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ export function initContainerEntry(
5252

5353
federationInstance.initShareScopeMap(name, shareScope);
5454

55-
webpackRequire.S[name] = shareScope;
5655
if (webpackRequire.federation.attachShareScopeMap) {
5756
webpackRequire.federation.attachShareScopeMap(webpackRequire);
5857
}

0 commit comments

Comments
 (0)