В WSL2: установлен Ubuntu 20.04 для Windows 10 nodejs, но npm не работает

#node.js #npm #windows-10 #windows-subsystem-for-linux #ubuntu-20.04

#node.js #npm #windows-10 #windows-subsystem-for-linux #ubuntu-20.04

Вопрос:

Я использую WSL2: Ubuntu 20.04 в своей операционной системе Windows 10. Я установил, nodejs используя команду, sudo apt-get install -y nodejs когда я выполняю node -v команду, я получаю v12.18.3

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi $ узел -v 
v12.18.3

но когда я выполняю npm -v команду, я получаю следующую команду

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi $ нпм -в 
-bash: /mnt/c/Program Files/nodejs/npm: /bin/sh ^M: плохой интерпретатор: такого файла или каталога нет

Я также выполняю whereis команду. Надеюсь, это поможет найти решение.

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi $ где находится узел 
узел: /usr/bin/узел /usr/включить /узел /mnt /c/Program Files/nodejs/node.exe /usr/share/man/man1/node.1.gz

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi $ где находится нпм
npm: /usr/bin/npm /mnt /c/Program Files/nodejs/npm /mnt /c/Program Files/nodejs/npm.cmd /usr/share/man/man1/npm.1

Я перепробовал почти все решения stackoverflow и проблемы с github, но у меня ничего не получилось.
Надеюсь, у какой-нибудь доброй души есть решение этой проблемы. Заранее благодарю.

Ответ №1:

Попробуйте это

 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sudo apt install npm
  

Комментарии:

1. Это сработало. Можете ли вы объяснить мне, какой путь вы экспортируете? И в чем была проблема?

2. PATH — это переменная env, которая указывает, где искать команды, в вашем случае npm bin был не на правильном пути.

3. ЕДИНСТВЕННОЕ, что работало во всем Интернете, включая чат GPT. Спасибо!

4. Рад, что он все еще помогает людям.

Ответ №2:

Лучшим способом является настройка /etc/wsl.conf в вашем каталоге пользователя Windows.

Добавление этого в /etc/wsl.conf , поэтому путь Windows не будет иметь приоритета

 [interop]
appendWindowsPath=false
  

Для получения дополнительной информации о конфигурации ознакомьтесь с блогом разработчиков Microsoft здесь.

Комментарии:

1. Это должно быть общепринятым решением. Если узел / npm установлен как в WSL2, так и в вашей операционной системе Windows, это вызовет проблемы из-за совместимости путей.

Ответ №3:

Решение для следующей ошибки: -bash: /mnt/c/Program Files/nodejs/npm: /bin/sh^M: bad interpreter: No such file or directory

Редактировать ~/.bashrc Добавить в конце файла:

 # strip out problematic Windows %PATH%
PATH=$(echo "$PATH" | sed -e 's/:/mnt.*//g')
  

Теперь npm init будет работать.

Ответ №4:

Для установки nodejs в WSL не используйте apt следуйте инструкциям Microsoft:

Смотрите также, как удалить, nodejs если вы установили его через apt :

Для npm работы под WSL1:


Примечания к WSL2:

ПРИМЕЧАНИЕ: если вы используете VPN, ваше контейнерное подключение может быть нарушено в WSL2 (например, с Cisco AnyConnect) — исправление работает, но может больше не понадобиться в AnyConnect (WSL2 в VPN теперь работает у меня после недавнего обновления @ конец июля 2022)

Я думал, что мои контейнеры WSL работают под управлением WSL2 (я обновил ядро WSL с помощью wsl --update ) — при настройке Visual Studio с помощью WSL я увидел предупреждение WSL1. Вам также необходимо обновить контейнеры:

 wsl --set-version ubuntu-22.04 2
wsl --set-default-version 2
  

Чтобы интеграция Visual Studio работала должным образом с Ubuntu 22.04 в WSL, вам также в настоящее время необходимо выполнить обновление gzip для установки VS Code Server for x64 в WSL ( code .: в терминале Linux):

 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
  

Наконец я обновился npm , и все работает (выберите одну из следующих команд):

  • nvm install-latest-npm
  • npm install -g npm@latest

Примечания к Azure AD / CLI

При использовании nodejs с Azure Active Directory, похоже, возникает проблема с azure-cli забыванием учетных данных в WSL1 / WSL2 и постоянным сообщением вам об этом az login . В этом случае вам необходимо запустить свои local экземпляры разработки узлов в Windows.

Ответ №5:

Для всех операционных систем Unix / Linux / macOS я бы всегда предпочел использовать «Диспетчер версий узла». Обычно он безупречно работает в Linux и macOS (и для него также есть порт Windows) и обеспечивает очень простой способ node и npm правильной установки без необходимости быть root .

Смотрите здесь:https://github.com/nvm-sh/nvm

Я могу подтвердить здесь, на моем компьютере, что он также работает в Ubuntu 20.04 на WSL2.

Комментарии:

1. nvm n ) являются анти-шаблонами