启动另一个进程时保留 Node.js 调试模式

问题描述

要调试 Node.js 进程,我使用:

node --inspect-brk foo_bar.js

但是,如果该实例将启动另一个单独的实例,而这将是 - 如何在调试模式下运行该实例?

问题是,我正在为 Node.js 使用 commander.js 库,如下所示:

var program = require('commander')
...
program.parse(process.argv)

这会创建 Node.js 进程的另一个实例,因此我失去了调试功能(我正在通过 Chromium 浏览器进行调试)。我怎样才能克服这个问题?

解决方法

注意:如果您使用独立的可执行文件实现子命令,Commander 只会创建另一个进程。

Commander 检测到传递给节点调用的调试器选项,并将它们传递给调试端口加 1 的子进程。

例如

// index.js
const { program } = require('commander');

program
  .command('sub','stand-alone');

console.log('1');
console.log('2');

program.parse();
// index-sub.js
console.log('3');
console.log('4');
% node --inspect-brk index.js sub
Debugger listening on ws://127.0.0.1:9229/25005682-6bf4-44fb-bdb2-2cc7749bb328
For help,see: https://nodejs.org/en/docs/inspector
Debugger attached.
1
2
Debugger listening on ws://127.0.0.1:9230/00d1924a-3122-4bef-86f2-65d562fbf3ed
For help,see: https://nodejs.org/en/docs/inspector
Debugger attached.
3
4