Why does npm install fetch an old version of the package?

Viewed 78

I'm trying to run this command:

npm install --save react-highlight-words@0.16.0

Which fails with this message:

npm install --save react-highlight-words@0.16.0
(node:16708) ExperimentalWarning: The fs.promises API is experimental
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: admin_fe@1.0.0
npm ERR! Found: react@17.0.2
npm ERR! node_modules/react
npm ERR!   dev react@"^17.0.2" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^0.14.0 || ^15.0.0 || ^16.0.0-0" from react-highlight-words@0.16.0
npm ERR! node_modules/react-highlight-words
npm ERR!   react-highlight-words@"0.16.0" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! See /Users/amitruparel/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/amitruparel/.npm/_logs/2021-10-08T01_17_59_650Z-debug.log

However looking at the github code for this package:

  "peerDependencies": {
    "react": "^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0"
  }

it does seem to support React v17 (which I have)

So I don't understand why is npm not letting me install this package?

1 Answers

You're looking at the master version of package.json which may not actually correspond with the one for the 0.16.0 release.

There's no tag for 0.16.0 but you can still view the dependencies for that published version via...

npm view react-highlight-words@0.16.0 peerDependencies

# { react: '^0.14.0 || ^15.0.0 || ^16.0.0-0' }

Note that v0.16.0 is over 3 years old. The current version on NPM is 0.17.0 which is probably what you want

npm view react-highlight-words peerDependencies

# { react: '^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0' }
Related