2012-04-04 16 views
3

我有一个我想要全局安装的NodeJs模块“some-module”,因此它可以直接从命令行运行,而不需要节点可执行前缀。即:$> some-module [args]我希望其中一个参数是--debug。这样做的原因是我不想要求这个模块的用户将它安装到他们的本地目录,只是为了运行node --debug-brk node_modules/some-module/[path to entry point] [args]将NodeJs应用程序从其进程内切换到调试模式

在它的NodeJS文档状态的调试(http://nodemanual.org/latest/nodejs_ref_guide/debugging.node.js.html

The V8 debugger can be enabled and accessed either by starting Node.js with the --debug command-line flag or by signaling an existing Node.js process with SIGUSR1 .

我试图这样做高级用法部分:

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) 

我需要做什么才能使运行过程切换到调试模式?

此外,我想用节点检查器调试给定的应用程序。

回答

0

我不太清楚,如果我明白你的问题,但是...

你或许可以安装一个应用程序在全球有它在断点使用NPM停止。在package.json地说:

... 
"scripts": {"start": "node --debug-brk some-module.js"}, 
"bin" : { "some-module" : "./some-module.js" }, 
... 

运行npm start -g some-module将在第一行中断。 然后,您可以使用节点检查器进行调试。

关于从代码中停止的部分,节点在调试器中有一个构建(这是非常基本的),但它允许此功能。 如果您在代码中包括地方:

debugger; 

并运行:

node debug some-module.js 

它会在调试器停在那里(:这是不一样的节点检查,我不不知道这是否可以通过节点检查器来实现)。

不明白你为什么这样做的原因,但希望这有助于。

相关问题