2011-06-24 43 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