-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Module Federation shared deep dependency resolved incorrectly #15971
Comments
Major issue for me as well. |
This was referenced Jun 30, 2022
This configuration: shared: {
uuid: "^8.3.2",
// or the equivalent:
uuid: { requiredVersion: "^8.3.2" },
} will force the version to be shared: ["uuid"],
// or the equivalent:
shared: {
uuid: {},
} Note you can also mix array and object: shared: [
"lib",
"uuid",
{
react: { singleton: true },
'react-dom': { singleton: true },
}
], or use that: shared: [
lib: {},
uuid: {},
react: { singleton: true },
'react-dom': { singleton: true },
}, |
This was referenced Jun 17, 2023
I have the same issue. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug report
What is the current behavior?
When using Module Federation, sharing a dependency and your other dependencies are using it too but in different versions, it won't respect semver matching and use the same version for everything.
For example, even when it is explicitly defined to be shared with
^8.3.2
in the top-level, it matches the3.4.0
version that another deep dependency consumes.If the current behavior is a bug, please provide the steps to reproduce.
Repo that reproduces the issue - https://github.com/tzachbon/mf-shared-deep-dependency
This example tries to reproduce the problem when sharing a dependency that exists in multiple versions across the node modules but resolves the request incorrectly.
In this example repo, I use
uuid
package.This graph shows that the root
uuid
is 8.3.2 and the version underlib
is 3.4.0.lib
uses thev3
method fromuuid
.This method exists only in version 8.3.2.
By default, if we build this project, serve it and click on
new uuid
, everything crashes as expected:But when we use Module Federation and share this package from
app1
like this:We can see that the runtime understands the difference between the packages:
But when we click on
new uuid
which crashed our app, it works (not the desired behavior)...When we look inside the index file, we can see the
moduleToHandlerMapping
resolve it incorrectly:And when we remove the
uuid
entry from theshared
section in ModuleFederationPlugin we can see that the app behaves as expected:For some reason, even when it is explicitly defined to be shared with
^8.3.2
, it matches the3.4.0
version thatlib
consumes.What is the expected behavior?
I would expect that each dependency would get the correct package resolution according to the node resolution algorithm.
In our example -
Other relevant information:
webpack version: 5.72.1
Node.js version: v16.15.0
NPM version: 8.5.5
Operating System: MacOS Monterey 12.4
Also asked in the Module Federation examples repo -
module-federation/module-federation-examples#2033
The text was updated successfully, but these errors were encountered: