JetBrains WebStorm не обнаруживает установленные дистрибутивы Linux для подсистемы Windows для Linux
Я пытаюсь отладить код nodejs с помощью функций отладки, доступных в WebStorm в дистрибутиве Ubuntu или Debian Linux, установленном в подсистеме Windows для Linux.
Я следовал инструкциям, перечисленным на веб-сайтах ниже, но моя установка WebStorm отказывается обнаруживать дистрибутивы Linux, которые я установил в своей системе, и я уже установил дистрибутив по умолчанию, используя wslconfig.exe.
- https://stackoverflow.com/questions/51912772/how-to-use-wsl-as-default-terminal-in-webstorm-or-any-other-jetbrains-products
- https://blog.jetbrains.com/webstorm/2018/06/webstorm-2018-2-eap-182-3208/
Кроме того, я, похоже, не могу вручную сказать WebStorm, что в моей системе установлены дистрибутивы Linux.
Вопросы:
- Есть ли параметр конфигурации, который мне не хватает для WebStorm в связи с обнаружением распределения WSL?
- Как я могу заставить WebStorm обнаруживать мои дистрибутивы Linux?
Обратите внимание: это для возможности отладки прерываний с помощью WebStorm, а не только для использования терминала. Я смог запустить терминал без проблем, но мне нужны функции отладки, доступные в WebStorm.
1 ответ
Вы можете попробовать добавить свои дистрибутивы в ~\.WebStorm2019.1\config\options\wsl.distributions.xml
вручную. См. https://youtrack.jetbrains.com/issue/PY-32424, https://www.jetbrains.com/help/ruby/configuring-remote-interpreters-using-wsl.html для получения дополнительной информации. Обратите внимание, что вам нужно указать полный путь к исполняемым файлам. Короткие имена работают только с корнями установки по умолчанию.
Это может стать проблемой, если вы используете версии WSL, которые не установлены с помощью магазина Windows. У JetBrains есть официальное исправление, но если вам нужен другой способ установки дистрибутивов Linux по умолчанию, вы можете запустить следующий код в PowerShell:
$REGKEY="HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
$REGITEM = "DoNotConnectToWindowsUpdateInternetLocations"
function Set-RegistryItem {
param (
# Registry key to set
[Parameter(Mandatory=$true)]
[string]
$RegistryKey,
# Registry item to set
[Parameter(Mandatory=$true)]
[string]
$RegistryItem,
# Value to Set
[Parameter(Mandatory=$true)]
[string]
$Value,
# Value type to Set
[Parameter(Mandatory=$true)]
[string]
$Type
)
if ($(Get-ItemProperty -Path Registry::$RegistryKey -Name $RegistryItem)) {
New-ItemProperty -Path Registry::$RegistryKey -Name $RegistryItem -PropertyType $Type -Value $Value -Confirm -Force
}
}
Set-RegistryItem `
-RegistryKey "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" `
-RegistryItem DoNotConnectToWindowsUpdateInternetLocations `
-Value 0 `
-Type DWord
Set-RegistryItem `
-RegistryKey HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsStore `
-RegistryItem AutoDownload `
-Value 4 `
-Type DWord
Set-RegistryItem `
-RegistryKey HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsStore `
-RegistryItem RemoveWindowsStore `
-Value 0 `
-Type DWord
Это временно включит хранилище Windows и позволит вам устанавливать программы, которые вам могут понадобиться (дистрибутивы Linux). Если ваша групповая политика предотвращает выполнение PowerShell, вам не повезло.
Кроме того, хранилище Windows будет отключено при перезагрузке компьютера, если оно отключено групповой политикой.
Как только дистрибутив Linux установлен по умолчанию через магазин Windows, JetBrians подхватывает его практически сразу.