Как отлаживать JavaScript в nodejs в Windows, когда я не вызываю node.exe
Я пытаюсь отладить скрипт nodejs (в Windows). Я обнаружил, что могу остановить выполнение / установить точку останова в сценарии с помощью "отладчика"; заявление. Однако, похоже, это работает, только если node.exe называется:
node debug myscript.js
Проблема в том, что я не тот, кто вызывает node.exe, поэтому я не могу передать аргумент отладки. На самом деле node.exe вызывается много раз до myscript.js. И myscript.js в свою очередь вызывается из какого-то другого.js. Запуск myscript.js напрямую (за пределами other.js) не работает.
Есть ли способ подождать, пока отладчик подключится?
Если возможно, решение должно использовать отладчик GUI (например, npm node-inspector).
Обновление 1:
Чтобы дождаться отладчика в вашем приложении, используйте:
npm install sleep # install locally, not global
Добавьте код в myscript.js:
var sleep = require('sleep');
...
var done = 1;
while ( done != 1 ) {
console.log("PID=" + process.pid);
sleep(1);
}
...
Запустите ваш скрипт (т.е. запустите все, что запускает его выполнение):
PID=3280
PID=3280
Запустить узел-инспектор:
C:\Users\Samo>node-inspector
Node Inspector v0.12.7
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Откройте новый cmd.exe и запустите:
C:\Users\Samo>tasklist /FI "IMAGENAME eq node.exe"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
node.exe 3944 Console 1 64,016 K
node.exe 3280 Console 1 119,276 K
Из той же проблемы cmd.exe:
node -e "process._debugProcess(3280)"
В выводе отлаженного скрипта вы должны увидеть:
PID=3280
Starting debugger agent.
Debugger listening on port 5858
Теперь перейдите по указанному URL ( http://127.0.0.1:8080/?port=5858), используя Chrome (не Firefox, а Chrome). Вы должны быть в состоянии отладить, сейчас.
Я сказал должен, потому что в моем случае это не работает. Если я отправлю _debugProcess на 3280 (мой myscript.js), ничего не произойдет. Однако если я отправлю _debugProcess на номер 3944, я получу "Запуск агента отладчика". сообщение. Зачем?
0 ответов
Если у вас есть типичное рабочее пространство Windows, такое как Node, git и VSCode,
вы можете сделать это, выполнив следующие простые шаги:
- В VSCode откройте
launch.json
конфигурации или создайте новую, щелкнув колесико
(это вид отладки CtrlShiftD)
- По умолчанию узел будет прослушивать порт 9229, поэтому добавьте эту конфигурацию:
{
"type": "node",
"request": "attach",
"name": "Attach to 9229",
"port": 9229
},
- Откройте диспетчер задач и найдите PID вашего процесса узла, который
я мог бы идентифицировать по"build"
папка, в которойindex.js
является. - открыть другой
cmd
илиgit-bash
и запустите эту команду,
где21392
PID вашего процесса.
node -e "process._debugProcess(21392)"
Теперь все должно быть готово.