2011-06-24 77 views
17

我正在使用supervisor自動重新加載我的node.js,例如,運行node.js應用程序與監督程序調試

supervisor -w . app.js 

但是,我不能找出如何讓監督員在調試中運行node.js過程,例如,相當於

node --debug app.coffee 

任何人有什麼想法?

+1

主管鏈接斷開。網頁顯示「Posterous Spaces is already available」 –

回答

9

該解決方案將在* nix工作:

轉到/usr/local/bin或在您的$ PATH任何其他目錄

$ cd /usr/local/bin 

創建可執行腳本(比如,節點調試)包含以下內容

#!/bin/bash 
node --debug [email protected] 

爲了使其可執行:

$ sudo chmod 777 /usr/local/bin/node-debug 

現在你可以這樣運行了主管:

$ supervisor -x node-debug script.js 

附::爲了圓起來:

su 
echo '#!/bin/bash 
node --debug [email protected]' > /usr/local/bin/node-debug 
chmod 777 /usr/local/bin/node-debug 
+0

這樣我得到'調試器在端口5858上偵聽無法在端口5858上打開套接字,在重試之前等待1000毫秒,而手動'節點--debug'工作正常。 – Redsandro

0

使用-x標誌的node-supervisor github page

supervisor -w . -x 'node --debug' app.js

作爲證明,但不會與CoffeeScript的工作,所以你必須使用

supervisor -w . -x 'coffee --debug' app.js

+3

嘗試過,但與DEBUG進入無限循環:用'coffee --debug app.coffee'開始子進程DEBUG:execvp():沒有這樣的文件或目錄 –

+0

@JamesHollingworth我認爲'咖啡--debug'只能工作太多了:P – Raynos

3

node-dev

node-dev on Github

「所有參數都傳遞給子進程。節點開發--debug server.js將調試應用程序,而不是監督者本身。」

創建 「test.js」 的Node.js腳本$ HOME/nodetest

第一終端(運行在調試模式下的節點,調試將要監聽的端口5858上,節點開發會重新修改過的文件):

cd $HOME/nodetest 
    npm install node-dev 
    node_modules/.bin/node-dev --debug test.js 

第二終端(啓動網絡檢查器基於WebKit的瀏覽器,檢查連接到調試器的端口5858並聽取端口8080):

cd $HOME/nodetest 
    npm install node-inspector 
    node_modules/.bin/node-inspector 

打開這個網址的基於WebKit的瀏覽器(Chrome,Safari等):

http://0.0.0.0:8080/debug?port=5858 

點擊 「腳本」,並設置在代碼中的斷點。

24

這也適用於(而且你並不需要一個單獨的bash腳本):

supervisor -- --debug app.js 
supervisor -- --debug=7070 app.js 
+1

這個應該是被接受的答案。感謝你的分享。 –

+0

是的,它的工作原理如此簡單,也適用於「高級」檢測器,例如用於運行Express:'DEBUG = myapp:* supervisor - --inspect bin/www'。我遇到了嘗試使用-x參數的事件錯誤,但是這種替代參數格式可以工作。 – scipilot

3

CoffeeScript site

--nodejs的node可執行文件提供了一些有用的選項,例如 --debug,--debug-brk和--max-stack-size。使用此標誌將選項直接轉發到Node.js.

我想這和它的工作:

主管 - --nodejs --debug app.coffee

您可以添加這樣的其他參數:

主管-w。 -n錯誤 - --nodejs --debug app.coffee