Fix: /usr/bin/env: node: No such file or directory
When I was trying to install a module using npm today, it returned an error stating that my nodejs version is old and it needs to be updated. Then I checked the node version and it was really old, and noticed I installed it using the Ubuntu repos (which doesn't get latest updates.)
So I installed the latest LTS version of node using the Node Version Manager (NVM) and noticed that I had two versions of node running after this upgrade. ie:
$ node -v
v8.9.3
$ nodejs -v
v4.2
This caused problems when using the NPM because it was referring to old nodejs version. So I removed it with the command
sudo apt-get remove nodejs
Now whenever I ran the npm install command, it failed stating:
/usr/bin/env: node: No such file or directory
So to confirm if I'm using the right node binary, I ran the command which node and it showed the right node binary path inside the nvm directory inside my home directory.
/home/nimeshka/.nvm/versions/node/v8.9.3/bin/node
Although it showed the correct path for node, npm failed because its referring to node inside my /usr/bin path.
Then I ran the following command to see what I have in my /usr/bin/ directory for node and found that it was linked to /usr/bin/nodejs (which I uninstalled earlier).
So to fix the issue, I removed the /usr/bin/node symlink and added a new symlink to point to the right node binary path.
sudo rm /usr/bin/node
sudo ln -s /home/nimeshka/.nvm/versions/node/v8.9.3/bin/node /usr/bin/node
Instead of creating the symlink with this full path, you can enter
sudo ln -s "$(which node)" /usr/bin/node
$(which node) will be excecuted when you run the command and will be replaced with your path to node :)
I hope this post will help someone to fix this error. Please don't forget to leave a comment if this helped you, or if I have missed anything.