I am using WSL2: Ubuntu 20.04 in my Windows 10 operating system. I have installed nodejs
using the command sudo apt-get install -y nodejs
when I do node -v
command I get v12.18.3
mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ node -v v12.18.3
but when I do npm -v
command I get this below command
mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ npm -v -bash: /mnt/c/Program Files/nodejs/npm: /bin/sh^M: bad interpreter: No such file or directory
I also do whereis
command. Hope this will help to find solution.
mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ whereis node node: /usr/bin/node /usr/include/node /mnt/c/Program Files/nodejs/node.exe /usr/share/man/man1/node.1.gz mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ whereis npm npm: /usr/bin/npm /mnt/c/Program Files/nodejs/npm /mnt/c/Program Files/nodejs/npm.cmd /usr/share/man/man1/npm.1
I have tried almost all the stackoverflow solutions and github issues but nothing is worked for me.
Hope any kind soul has the solution to this problem. Thanks in advance.
Try this
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sudo apt install npm
Solution for following error: -bash: /mnt/c/Program Files/nodejs/npm: /bin/sh^M: bad interpreter: No such file or directory
Edit ~/.bashrc
Append at end of file:
# strip out problematic Windows %PATH%
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g')
Now npm init
will work.
A better way is configuring /etc/wsl.conf
in your Windows User directory.
Adding this into the /etc/wsl.conf
, so Windows Path will not take the precedence
[interop]
appendWindowsPath=false
For more config details check the Microsoft Dev Blog here .
For all Unix/Linux/MacOS operating systems, I would always rather go with the "Node Version Manager". It normally works flawlessly on Linux and MacOS (and there's a Windows port for it as well) and enables a very simple way of installing node
and npm
correctly without the need of being root
.
See here: https://github.com/nvm-sh/nvm
I can confirm here on my machine that it also works on Ubuntu 20.04 on WSL2.
To install nodejs
in WSL don't use apt
follow Microsoft's guidance:
See also how to remove nodejs
if you installed it via apt
:
For npm
to work under WSL1 :
ipv6
(or configure to prefer ipv4
) - if you are hitting these issues .ipv6
on my main NIC & npm install
immediately began working.WSL2 Notes :
NB: if you use a VPN your container connectivity will most likely be broken under WSL2 (eg with Cisco AnyConnect ) - the fix works but GWSL will be broken so no chance of Xorg apps working.
I thought my WSL containers were running under WSL2 (I upgraded the WSL kernel with wsl --update
) - while setting up Visual Studio with WSL I saw a WSL1 warning. You also have to upgrade containers:
wsl --set-version ubuntu-22.04 2
wsl --set-default-version 2
To get Visual Studio integration working properly with Ubuntu 22.04
in WSL you also currently have to upgrade gzip
to install VS Code Server for x64
in WSL ( code .:
in the Linux terminal):
wget http://ftp.debian.org/debian/pool/main/g/gzip/gzip_1.12-1_amd64.deb
sudo dpkg -i ./gzip_1.12-1_amd64.deb
Finally I upgraded npm
& everything works (choose one of the following commands):
nvm install-latest-npm
npm install -g npm@latest
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.