Table of Contents Hide
If you install the node modules using the latest node.js and npm version 7, you will get an error Unable to resolve dependency tree error when installing npm packages.
In this tutorial, we will discuss what exactly “Unable to resolve dependency tree error when installing npm packages” is and how to fix this error.
What is Unable to resolve dependency tree error when installing npm packages?
Many developers are facing this issue while installing the dependencies in angular projects.
A similar issue was observed while installing the
react-facebook-login package through npm version 7.
If you have recently updated the NPM to the latest version (v7) and tried to update or install the dependencies in your project, you might get a dependency tree error.
npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: email@example.com npm ERR! Found: @firstname.lastname@example.org npm ERR! node_modules/@angular/common npm ERR! @angular/common@"11.0.3" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer @angular/common@"^9.1.0 || ^10.0.0" from @email@example.com npm ERR! node_modules/@agm/core npm ERR! @agm/core@"3.0.0-beta.0" from the root project
What is causing the ERESOLVE unable to resolve dependency tree?
In the new version of npm (v7), by default,
npm install will fail when it encounters conflicting
peerDependencies. This issue was not happening in npm version 3 to 6 as it used to ignore the peerDependencies when building a package tree ultimately.
Take a look at the official NPM documentation on legacy-peer-deps for more info about peer dependencies in npm v7.
The differences between the two are below –
--legacy-peer-deps: ignore all peerDependencies when installing, in the style of npm version 4 through version 6.
--strict-peer-deps: fail and abort the install process for any conflicting peerDependencies when encountered. By default, npm will only crash for peerDependencies conflicts caused by the direct dependencies of the root project.
If the package cannot be installed because of overly strict peerDependencies that collide, it provides a way to move forward resolving the situation.
legacy-peer-deps is not recommended, as it will not enforce the peerDependencies contract that meta-dependencies may rely on.
How to fix Unable to resolve dependency tree error when installing npm packages?
There are two solutions to resolve this issue. Let us look at each of those in detail.
Solution 1: Ignore the peerDependencies
The easiest way to fix the issue is to pass an additional parameter –legacy-peer-deps to npm install. The
--legacy-peer-deps tells the npm to ignore the peer dependencies and continue the installation of the package.
Try the below command to install the dependencies for your project.
npm install --save --legacy-peer-deps
You can also set this permanently by adding this into a configuration by running the below command.
npm config set legacy-peer-deps true
Note: In this solution, the peer dependencies will not be installed by default, even if you are using the latest version of NPM.
Solution 2: Using –force
The other solution is to use the
--force flag. The
--force argument will force npm to fetch remote resources even if a local copy exists on disk.
Step 1: Delete the current node_modules. You can remove it by using the below command.
rm -rf node_modules
Step 2: Remove the
package-lock.json by running the below command
Step 3: Clear the npm cache and perform the clean installation with
--force flag as shown below.
npm cache clean --force npm install --force
By performing the above steps, you should resolve the issue successfully.
The Unable to resolve dependency tree error when installing npm packages occurs when you install the node dependencies with the latest version of NPM(v7).
The error is due to the strict peerDependencies that is set in the npm version 7, and as of npm v7, peerDependencies are installed by default which results in conflict and causes the issue.
We can resolve the ERESOLVE unable to resolve dependency tree by using the
--force flag while installing the dependencies, or we can ignore the peerDependencies by passing an additional argument