我有一个 NodeJs 模块“some-module”,我想全局安装它,这样它就可以直接从命令行运行,而无需 Node 可执行前缀。即: $> some-module [args]
我希望这些参数之一是 --debug
。这样做的原因是我不想要求这个模块的用户为了运行 node --debug-brk node_modules/some-module/[path to entry point] [args]
将它安装到他们的本地目录。
NodeJs 文档在其有关调试的高级用法部分中说明( http://nodemanual.org/latest/nodejs_ref_guide/debugging.node.js.html )
我尝试这样做:
process.kill(process.pid, 'SIGUSR1');
这产生了错误:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Unknown signal: SIGUSR1
at EventEmitter.kill (node.js:366:17)
at Object.<anonymous> (c:\dev\some-module\app.js:94:17)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
我需要做什么才能将正在运行的进程切换到 Debug模式?
另外,我想用 node-inspector 调试给定的应用程序。
最佳答案
我不太确定我是否理解你的问题,但是......
您可能可以全局安装应用程序并使用 npm 让它在断点处停止。在 package.json
中输入:
...
"scripts": {"start": "node --debug-brk some-module.js"},
"bin" : { "some-module" : "./some-module.js" },
...
运行
npm start -g some-module
将在第一行中断。然后,您可以使用 Node 检查器进行调试。
关于从代码中停止的部分,node 有一个内置的调试器(这是非常基本的),但它允许这个功能。
如果您在代码中包含某处:
debugger;
并运行:
node debug some-module.js
它会在调试器中停止(注意:这与 node-inspector 不同,我不知道这是否可以通过 node-inspector 实现)。
不太明白你这样做的原因,但希望这会有所帮助。
关于debugging - 将 NodeJs 应用程序从其进程内切换到 Debug模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10013743/