Node-Inspector не удалось открыть сокет

Я следую приведенным здесь инструкциям: https://github.com/node-spector/node-spector< /а>

Довольно просто. npm install node-inspector. В одной оболочке запустите node-inspector, а в другой запустите node --debug app.js. Shell выдает адрес локального хоста с определенным портом для отладчика. Откройте этот адрес в браузере — он загрузит ваш код. Оттуда добавьте точки останова, отладку сети и т. д.

Но это не работает. Следующее сообщение бесконечно регистрируется в моей оболочке:

Failed to open socket on port 5858, waiting 1000 ms before retrying

..и связь не устанавливается.

Итак, мой вопрос: у кого-нибудь была эта проблема и успешно найдено решение. Хотелось бы, чтобы это работало, было бы очень полезно. Мой единственный опыт работы с серверными отладчиками — это Ruby Byebug, настроить который было проще простого.


person GN.    schedule 06.10.2015    source источник


Ответы (1)


Сообщение, которое вы видите, напечатано, потому что другой процесс прослушивает порт 5858. Либо другое приложение, либо просто другой экземпляр процесса узла под отладчиком.

Обновление на основе комментариев под этим ответом

Если ваше приложение работает в кластерном режиме с помощью «кластера» основного модуля Node.js, то вы получите несколько рабочих процессов, каждый из которых пытается прослушивать порт 5858.

Node Inspector не может отлаживать несколько рабочих процессов одновременно. Вы должны выбрать один процесс и включить отладчик только в этом процессе. Когда вы запускаете приложение через node --debug, все процессы пытаются включить отладчик, поэтому вы не можете использовать эту команду.

Вместо этого вы должны:

  1. Запустите приложение без включенного отладчика.
  2. Затем вам нужно найти pid (идентификатор процесса) рабочего процесса, который вы хотите отлаживать.
  3. Получив PID, вам нужно включить отладчик в целевом процессе. Вы можете запустить kill -1 <pid> в UNIX или использовать node debug -p <pid>, который работает на всех платформах. Не забудьте выйти из node debug, прежде чем продолжить.
  4. Как только отладчик прослушивает целевой процесс на 5858, вы можете запустить Node Inspector обычным способом.

Мой ответ основан на следующем сообщении в блоге: https://strongloop.com/strongblog/whats-new-nodejs-v0-12-debugging-clusters/, проверьте его для получения более подробной информации.

person Miroslav Bajtoš    schedule 08.10.2015
comment
lsof -i :8080 // показывает процесс инспектора узлов, работающий на порту 8080 lsof -i :5858 // не показывает никакого процесса Я не думаю, что это проблема, процесс на порту 5858 не запущен. - person GN.; 19.10.2015
comment
Возможно, вы запускаете приложение в собственном кластере Node? И какая у вас версия Node? - person Miroslav Bajtoš; 20.10.2015
comment
Если вы работаете в кластере на Node v0.10, то в итоге у вас будет несколько рабочих процессов, каждый из которых пытается прослушивать порт 5858. Я обновлю свой ответ инструкциями, как это исправить. - person Miroslav Bajtoš; 21.10.2015