Skip to content

Commit

Permalink
fix(module-federation): additionalShared should check node_modules wh…
Browse files Browse the repository at this point in the history
…en applying to support transitive deps #28137 (#28216)

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->
Transitive deps may not exist on the project graph or be installed in
the root package.json file.
They could require the singleton pattern and should use the
`additionalShared` functionality.

However, the additionalShared will check project graph and root
package.json, erroring if the package cannot be found.

The last resort should be to use `require.resolve` to check the
node_modules folder to find the package.json of the package and select a
version from it.


## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #28137
  • Loading branch information
Coly010 authored and FrozenPandaz committed Oct 1, 2024
1 parent ccf71fd commit 6e2e637
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions packages/webpack/src/utils/module-federation/share.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,10 +306,14 @@ function addStringDependencyToSharedConfig(

sharedConfig[dependency] = config;
} else {
throw new Error(
`The specified dependency "${dependency}" in the additionalShared configuration does not exist in the project graph. ` +
`Please check your additionalShared configuration and make sure you are including valid workspace projects or npm packages.`
);
const pkgJsonPath = require.resolve(`${dependency}/package.json`);
if (!pkgJsonPath) {
throw new Error(
`Could not find package ${dependency} when applying it as a shared package. Are you sure it has been installed?`
);
}
const pkgJson = readJsonFile(pkgJsonPath);
const config = getNpmPackageSharedConfig(dependency, pkgJson.version);
}
}

Expand Down

0 comments on commit 6e2e637

Please sign in to comment.