2012-04-04 21 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 

它會在調試器停在那裏(:這是不一樣的節點檢查,我不不知道這是否可以通過節點檢查器來實現)。

不明白你爲什麼這樣做的原因,但希望這有助於。

相關問題