#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:
- Вам также может потребоваться отключить
ipv6
(или настроить по своему усмотрениюipv4
) — если вы сталкиваетесь с этими проблемами. - В WSL1 я отключил
ipv6
свою основную сетевую карту иnpm install
сразу же начал работать.
Примечания к 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
) являются анти-шаблонами