Yarn not installing in nvm version node version

When you install a new node version using nvm and then used npm to install yarn, you need to reinstall the yarn for the new node version.

Try:

nvm install 8.11.3
nvm use 8.11.3
npm install -g yarn

This will install yarn in:

.nvm/versions/node/v8.11.3/

You can then switch between 8.11.0 and 8.11.3 and your yarn will still work.


The problem that OP described caused by the fact that globally installed packages lives within their respected namespace (their version), and it cannot be shared across versions. There are a few ways around this. The NON-RECOMMEND WAY is to install yarn via brew, apt or non-node package manager. Although it works, but things may break.

The RECOMMEND WAY is described below.
nvm has a very nice default packages installer. This will installed specified packages when installing a new node version using nvm.

create a text file at $NVM_DIR/default-packages, usually it is located at ~/.nvm/default-packages, with a list of npm packages to be installed. The content may looks like the following

@vue/cli
create-react-app
firebase-tools
yarn

Documentation link here

try running nvm install --lts to install node's latest lts version, packages specified in the default-packages will be installed automatically.


Check to see if there is a ~/.npmrc file.

If so, delete the content in it.


I recently ran into this issue (on a mac). I had to use

brew install yarn --ignore-dependencies

and that did it for me. Yarn is available no matter what node version I switch to with nvm. Hopefully this helps someone. More information can be found here: https://yarnpkg.com/lang/en/docs/install/#mac-stable


Following the installation guide on official documentation:

If using nvm you can avoid the node installation by doing:

sudo apt update && sudo apt install --no-install-recommends yarn

Note: Due to the use of nodejs instead of node name in some distros, yarn might complain about node not being installed. A workaround for this is to add an alias in your .bashrc file, like so: alias node=nodejs. This will point yarn to whatever version of node you decide to use.