Подключение WebStorm к удаленному сеансу отладки node.js
Я запускаю приложение Node.js в виртуальной машине Linux в Oracle VirtualBox. Порт 5858
на виртуальной машине перенаправляется на порт 5858
на локальном хосте.
Я запускаю WebStorm в операционной системе хоста (Windows 7). В WebStorm я нажимаю Run >> Edit Configurations....
, затем я нажимаю кнопку добавления (знак плюса) и выбираю Node.js remote debug
. Затем я ввожу имя конфигурации и оставляю хост как 127.0.0.1
, а порт - 5858
. Я нажимаю OK
и убедитесь, что мое приложение node запущено на виртуальной машине с флагом --debug
.
Затем я нажимаю значок ошибки на панели инструментов WebStorm, а отладчик появляется в нижней части WebStorm IDE.
Как я могу подтвердить, что соединение выполнено успешно? Точки останова не работают, и консоль в WebStorm остается пустым (в то время как информация отправляется на консоль на виртуальной машине Linux). Может ли кто-нибудь предложить, что еще нужно сделать, чтобы заставить сеанс удаленной отладки работать?
Ответы
Ответ 1
Вместо просто
$ vagrant ssh
попробовать
$ vagrant ssh -- -L 5858:127.0.0.1:5858
Я также удалил строку config.vm.network :forwarded_port, guest: 5858, host: 5858
из моего Vagrantfile
и сделал $ vagrant reload
.
В вашем брандмауэре запустите
$ node --debug-brk path/to/file.js
Настройте конфигурацию удаленной отладки/отладки Node.js, настройки по умолчанию прекрасны (хост 127.0.0.1 и порт 5858).
Выполните следующее с вашего компьютера HOST, а не на брандмаутере.
$ telnet 127.0.0.1 5858
Вы должны получить ответ вроде
Type: connect
V8-Version: 3.14.5.9
Protocol-Version: 1
Embedding-Host: node v0.10.28
Content-Length: 0
Если вы не ошибетесь, то переместите порт вперед. Вы можете попробовать другой порт на стороне хоста и обновить конфигурацию Run/Debug в веб-буфере, которая ранее была настроена с порта 5858 на новый порт.
Теперь запустите конфигурацию отладки NodeJS. Он должен немедленно поднять файл, и вы сможете его отладить.
Я основал свои шаги с PHPStorm, но он должен быть таким же. Я предполагаю, что он будет работать на всех IDE на IntelliJ, если у вас установлен плагин NodeJS.
Ответ 2
1) Из руководства WebStorm:
Когда приложение для отладки выполняется на физически удаленном узле, вам нужно запустить прокси-сервер или любое другое программное обеспечение, обеспечивающее переадресацию портов на сервере Node.js. Это необходимо, поскольку порт отладки может открываться только на локальном сетевом интерфейсе. Не удается получить доступ к локальному сетевому интерфейсу с другого компьютера, поэтому WebStorm не сможет подключиться к нему при запуске сеанса отладки.
2) localhost на VM - это не тот же локальный хост (как это ни странно звучит) на хосте.
3) Отладчик V8 прослушивает localhost
Решение:
Вы можете настроить прокси-сервер ssh на linux VM: ssh -L 5858:127.0.0.1:5858 <vm_user>@<vm_ip> -N
, и здесь вы можете найти ответ, как это сделать в Windows → fooobar.com/questions/276815/...
Если вы сделаете это, ваша конфигурация отладки в WebStorm будет Host: 127.0.0.1 Port: 5858
Вы можете проверить, подключен ли WebStorm к удаленной сессии отладки, выбрав вкладку "Отладчик" и "Переменные". не может подключиться, подключен
Ответ 3
Это то, что я делаю в своей Linux Debian VM:
установить балансир
sudo apt-get install balance -y
создать маршрут в балансировке, чтобы перенаправить ваш порт 5858 на 5859
balance 5859 127.0.0.1:5858
запустите приложение
node --debug app.js
теперь вы можете получить доступ к нему извне виртуальной машины на порту 5859
Ответ 4
Просто голова, когда я пробовал это, мне пришлось использовать --debug-brk
. Запуск с помощью только --debug
не позволял WebStorm устанавливать точки останова после подключения.