Node.js: Как подключиться к запущенному процессу и отлаживать сервер с помощью консоли?
Я использую "forever" для запуска своего приложения. Я хочу подключиться к рабочей среде для проверки моего приложения. Так что я могу сделать?
Ответы
Ответ 1
Из http://nodejs.org/api/debugger.html:
Расширенное использование
Отладчик V8 можно активировать и получить доступ либо путем запуска Node с флагом командной строки -debug, либо путем сигнализации существующий Node процесс с SIGUSR1.
Найдите PID вашего процесса node
, а затем отправьте SIGUSR1
, чтобы сделать трюк:
kill -s SIGUSR1 nodejs-pid
Затем запустите node-inspector
и перейдите к указанному URL. Подробнее в этот учебник.
Ответ 2
Вы можете добавить REPL в свое приложение. Например, если вы добавили REPL для прослушивания на localhost-порт 5001, вы запускаете свое приложение, как обычно, и заходите в telnet: telnet localhost 5001
. Это приведет вас к подсказке, где вы можете напрямую взаимодействовать с вашим приложением.
В качестве альтернативы, если вам нужно, чтобы ваше приложение "приостанавливалось", когда оно достигло определенного состояния, вам нужно добавить "отладчик"; строки в области вашего кода, где вы хотите эти точки останова, затем запустите приложение в debug.
Надеюсь, что это поможет.
Ответ 3
Даже этот старый ответ ответил на вопрос, есть более простой способ, который передает параметры node:
forever start -c 'node --debug-brk' main.js
Если вы не хотите ждать добавления отладчика, замените --debug-brk
на --debug
Ответ 4
Начиная с Node 6.3, node имеет встроенный отладчик, который может быть запущен (даже в производственном приложении):
kill -USR1 <node-pid>
Процесс node выплюнет что-то вроде этого:
Debugger listening on ws://127.0.0.1:9229/f3f6f226-7dbc-4009-95fa-d516ba132fbd
For help see https://nodejs.org/en/docs/inspector
- Если вы можете получить доступ к серверу из браузера, вы можете использовать
chrome://inspect
в http://host.domain:9229
.
-
Если вы не можете подключиться через браузер (т.е. сервер находится в рабочем кластере с файерволом), вы можете активировать REPL для проверки по командной строке:
node inspect -p <node-pid>
До этой версии node-inspector
был отдельным инструментом для отладки процессов node. Однако, как описано на его собственной странице, она в основном не рекомендуется, так как активный пакет отладочной информации в настоящее время активно поддерживается и предоставляет более сложные функции. Для получения дополнительной информации об этом изменении см. этот поток.