简体   繁体   中英

In WSL2: Ubuntu 20.04 for Windows 10 nodejs is installed but npm is not working

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 :


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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM