1234

I used nvm to download node v0.4.10 and installed npm to work with that version of node.

I am trying to install express using

npm install express -g

and I get an error that express requires node version >= 0.5.0.

Well, this is odd, since I am following the directions for a node+express+mongodb tutorial here that used node v0.4.10, so I am assuming express is/was available to node v0.4.10. If my assumption is correct, how do I tell npm to fetch a version that would work with my setup?

2
  • 7
    Why don't you just update your Node version? Pretty sure there should be many more good additions than broken behavior that you will find. Commented Apr 8, 2013 at 23:58
  • 1
    Sometimes that's not an option. If he used nvm to downgrade, there might be a reason, such as some other group controls the executable node version he has to use.
    – fool4jesus
    Commented Jun 24, 2019 at 12:35

10 Answers 10

2034

If you have to install an older version of a package, just specify it

npm install <package>@<version>

For example: npm install [email protected]

You can also add the --save flag to that command to add it to your package.json dependencies, or --save --save-exact flags if you want that exact version specified in your package.json dependencies.

The install command is documented here: https://docs.npmjs.com/cli/install

If you're not sure what versions of a package are available, you can use:

npm view <package> versions

And npm view can be used for viewing other things about a package too. https://docs.npmjs.com/cli/view

7
  • 5
    I believe this will install the nearest major version that matches, so it might not be what you expect stackoverflow.com/a/22345808/1074400
    – Akhil F
    Commented Jun 17, 2015 at 18:33
  • 2
    @AakilFernandes if you specify an exact version, an exact version will be installed. If you specify a semantic version range, then you might get a non-exact match. There's nothing unique about the install command in that respect. Commented Jun 20, 2015 at 18:49
  • 8
    npm view <package> versions -json to see every single version, avoiding the ellipsis at the end of a list with many versions. Commented May 17, 2017 at 6:47
  • 16
    If you use npm install [email protected], you won't get the exact version 3.0.0, you'll get the latest 3.x.x version. To get the specific version, you have to use npm install [email protected] --save-exact. See this blog post: 60devs.com/npm-install-specific-version.html Commented Jan 10, 2018 at 9:53
  • 8
    @PatrickHund no, npm install [email protected] will get you exactly version 3.0.0. npm install express@^3.0.0 would get you the latest 3.x.x. --save-exact affects how it's written to packages.json, which I already covered in my answer. Also note, --save-exact has to be used in combination with either --save or --save-dev - it's not enough to use it on its own. Commented Jan 25, 2018 at 18:48
138

It's quite easy. Just write this, for example:

npm install -g [email protected]

Or:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

Note that package will be installed globally and be available for any project at your machine. But in case of npm package it's absolutely expected behaviour

3
  • 2
    Thanks for the latest and next version tags! Commented May 15, 2019 at 16:35
  • 13
    @inaps you might add a note that the -g flag is specifically for packages you want installed globally as a lot of users will get to this page and merely copy/paste without realizing how they are about to impact their package ecosystem. We've all been "that guy"
    – Jacksonkr
    Commented Apr 26, 2020 at 15:27
  • 1
    this will install the exact version locally but will put '^4.6.1' in package.json which means other developers or build tools may get another subversion which may not be what you want and cause a build to fail.
    – JesseBoyd
    Commented Mar 12, 2021 at 17:34
115

First remove old version, then run literally the following:

npm install [email protected]

or

npm install [email protected]

and for stable or recent

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
6
  • 21
    Is that a literal X or a stand-in for some numeric version number? Commented Apr 19, 2016 at 18:32
  • 9
    That was an either/or question, not a yes/no question. I tried npm install [email protected], and it seemed to work. Is that a feature or an accident of the way npm parses the version number? Commented Apr 20, 2016 at 15:06
  • 5
    @KeithThompson Yes, it is! Hehe, just kidding... It's the way npm parses it, see: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
    – gonz
    Commented May 30, 2016 at 21:31
  • 8
    @gonz: So it's a literal X. Commented May 30, 2016 at 21:34
  • 2
    I just wanted to address why did that work for you. I don't know Saurabh's original intention or what you are trying to do. 3.X would mean >= 3.0 and < 4.0.
    – gonz
    Commented May 30, 2016 at 21:43
46

In my opinion that is easiest and fastest way:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

0
11

you can update your npm package by using this command:

npm install <package_name>@<version_number>

example: npm install [email protected]

3

You can use the following command to install a previous version of an npm package:

npm install packagename@version
0
3

I have a general way to solve this type of problems, which could be helpful too, especially when cloning repositories to run them locally, but requires a little more analysis of the versions.

With the package npm-check-updates I verify the versions of the packages (according to the package.json file) that are not declared in their latest available versions, as shown in the figure (https://www.npmjs.com/package/npm-check-updates):

enter image description here

With this information we can verify the update status of the different packages and make decisions as to which packages to upgrade / degrade and which ones do not.

Assuming that we decided to update all the packages as they are listed, we can use the ncu -u command which only modifies your package.json file. Run npm install to update your installed packages and package-lock.json.

Then, depending on the requirements of the repository, we can refine what is needed, installing the specific versions with npm view <package> versions and npm install <package>@<version>

2

If you have to install an older version of a package, just specify it

npm install @ For example: npm install [email protected]

You can also add the --save flag to that command to add it to your package.json dependencies, or --save --save-exact flags if you want that exact version specified in your package.json dependencies.

The install command is documented here: https://docs.npmjs.com/cli/install

If you're not sure what versions of a package are available, you can use:

npm view versions And npm view can be used for viewing other things about a package too. https://docs.npmjs.com/cli/view

1
  • 1
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Mar 10, 2022 at 7:38
0

The easiest way I found: add package name with the version in package.json and then run npm install

"next-seo": "^5.4.0",
"next-themes": "^0.1.1",
"nextjs-progressbar": "^0.0.14",
0

Use npm config set save-exact=true if you want to install the exact version

Not the answer you're looking for? Browse other questions tagged or ask your own question.