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. Однако, как описано на его собственной странице, она в основном не рекомендуется, так как активный пакет отладочной информации в настоящее время активно поддерживается и предоставляет более сложные функции. Для получения дополнительной информации об этом изменении см. этот поток.