Вопрос или проблема
Я использую проект npm в WSL, но когда я запускаю его, появляется ошибка:
CMD.EXE был запущен с указанным выше путем в качестве текущей папки.
UNC пути не поддерживаются. Переход к папке Windows.
Я уже пробовал использовать net use и pushd, но это все равно не работает
C:\Windows\system32>net use X: \\wsl.localhost\Ubuntu-20.04\home\webtrunk\web-trunk
Ошибка системы 67.
Сетевое имя не найдено.
Это значение реестра DWORD
под названием “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\DisableUNCCheck”. Если это значение равно 1, командная строка принимает UNC пути в качестве текущего каталога. Если это значение равно 0 (или отсутствует), командная строка не принимает UNC пути.
Вопрос уже был отвечен здесь
Ответ или решение
Решение проблемы с поддержкой UNC-путей в WSL 2 и CMD.EXE
Введение
При работе с WSL 2 (Windows Subsystem for Linux 2) может возникнуть ошибка, связанная с тем, что UNC-пути (Uniform Naming Convention) не поддерживаются командной строкой Windows. Это может стать причиной сбоя при запуске npm-проекта. В этом материале мы разберем, что такое UNC-пути, объясним, как они могут влиять на вашу работу в WSL, и представим несколько способов решения этой проблемы.
Понимание проблемы
Ошибочное сообщение, которое вы получаете:
CMD.EXE was started with the above path as the current folder.
UNC paths are not supported. Defaulting to Windows folder.
указывает на то, что CMD старается установить текущую папку в UNC-путь, но не может этого сделать из-за ограничений, встроенных в саму командную строку Windows. Это означает, что CMD не может работать напрямую с сетевыми каталогами в их стандартном виде.
Причина ошибки
Windows Command Prompt изначально не поддерживает UNC-пути как текущие директории. Это было сделано для повышения безопасности и предотвращения различных проблем, связанных с сетевыми ресурсами. В случае с WSL, если вы пытаетесь получить доступ к директории, заданной в формате UNC, возникнет ошибка.
Способы решения проблемы
1. Изменение реестра Windows
Одним из возможных решений этой проблемы является изменение параметра в реестре Windows. Вы можете разрешить использование UNC-путей в CMD, изменяя DWORD значение:
- Ключ:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
- Параметр:
DisableUNCCheck
- Установите значение на
1
.
- Установите значение на
Для этого:
- Запустите
regedit
(Редактор реестра). - Перейдите к указанному пути.
- Найдите или создайте DWORD значение
DisableUNCCheck
, установив его в1
. - Перезагрузите компьютер.
2. Использование сетевого диска
Если изменение реестра не подходит для вашего сценария, вы можете подключить вашу директорию как сетевой диск с помощью команды net use
. Например:
net use X: \\wsl.localhost\Ubuntu-20.04\home\webtrunk\web-trunk
Однако, как вы указали, у вас возникает ошибка System error 67. The network name was not found.
Если эта ошибка возникает, убедитесь, что:
- Вы используете правильный синтаксис UNC-пути.
- Запуск WSL происходит в правильной версии и с правильно настроенным именем дистрибутива.
Попробуйте также проверить, доступен ли путь \\wsl.localhost\Ubuntu-20.04\home\webtrunk\web-trunk
из проводника Windows.
3. Доступ через локальные пути
Если вы работаете с проектом в WSL, возможно, вы можете использовать локальный путь, минуя UNC-путь полностью. Например, вы можете перейти в директорию проекта непосредственно из WSL:
cd /home/webtrunk/web-trunk
npm start
4. Проверьте настройки вашего WSL
Убедитесь также, что в WSL включена правильная настройка для сетевых подключений. Проверьте, используете ли вы новую версию WSL 2 и правильно ли настроены все необходимые компоненты для работы.
Заключение
Проблема с поддержкой UNC-путей в CMD может быть решена различными способами, включая изменения в реестре, подключение сетевых дисков и использование локальных путей. Важно выбрать тот метод, который наиболее удобен для вашего рабочего процесса. Если указанные рекомендации не помогают, возможно, стоит обратить внимание на конфигурацию самого WSL или проверить сетевые настройки системы.
Эта инструкция поможет вам оптимизировать вашу работу с WSL 2 и npm-проектами, минимизируя время простоя.