providing module do not override already loaded modules
fixes a bug where dynamic loaded containers override shared modules
This commit is contained in:
parent
49e5ce2812
commit
b0cc32cb17
|
@ -80,7 +80,7 @@ class ShareRuntimeModule extends RuntimeModule {
|
|||
[
|
||||
"var versions = scope[name] = scope[name] || {};",
|
||||
"var activeVersion = versions[version];",
|
||||
"if(!activeVersion || uniqueName > activeVersion.from) versions[version] = { get: factory, from: uniqueName };"
|
||||
"if(!activeVersion || !activeVersion.loaded && uniqueName > activeVersion.from) versions[version] = { get: factory, from: uniqueName };"
|
||||
]
|
||||
)};`,
|
||||
`var initExternal = ${runtimeTemplate.basicFunction("id", [
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
it("should not override an already loaded shared module version", async () => {
|
||||
__webpack_share_scopes__.default = {
|
||||
package: {
|
||||
"1.0.0": {
|
||||
get: () => () => 42,
|
||||
loaded: true,
|
||||
from: "a"
|
||||
}
|
||||
}
|
||||
};
|
||||
await __webpack_init_sharing__("default");
|
||||
expect(require("package")).toBe(42);
|
||||
});
|
1
test/configCases/sharing/no-override-loaded/node_modules/package/index.js
generated
vendored
Normal file
1
test/configCases/sharing/no-override-loaded/node_modules/package/index.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
module.exports = "package";
|
3
test/configCases/sharing/no-override-loaded/node_modules/package/package.json
generated
vendored
Normal file
3
test/configCases/sharing/no-override-loaded/node_modules/package/package.json
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"version": "1.0.0"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"package": "1"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// eslint-disable-next-line node/no-unpublished-require
|
||||
const { SharePlugin } = require("../../../../").sharing;
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
output: {
|
||||
uniqueName: "b"
|
||||
},
|
||||
plugins: [
|
||||
new SharePlugin({
|
||||
shared: ["package"]
|
||||
})
|
||||
]
|
||||
};
|
Loading…
Reference in New Issue