【发布时间】:2011-09-22 00:28:04
【问题描述】:
我正在使用 supervisor 自动重新加载我的 node.js,例如
supervisor -w . app.js
但是我不知道如何让主管在调试中运行 node.js 进程,例如相当于
node --debug app.coffee
有人有什么想法吗?
【问题讨论】:
-
主管链接已损坏。网页显示“Posterous Spaces 不再可用”
我正在使用 supervisor 自动重新加载我的 node.js,例如
supervisor -w . app.js
但是我不知道如何让主管在调试中运行 node.js 进程,例如相当于
node --debug app.coffee
有人有什么想法吗?
【问题讨论】:
这也有效(而且您不需要单独的 bash 脚本):
supervisor -- --debug app.js
supervisor -- --debug=7070 app.js
【讨论】:
DEBUG=myapp:* supervisor -- --inspect bin/www。我在尝试使用 -x 参数时遇到了事件错误,但这种替代参数格式有效。
此解决方案适用于 *nix:
转到/usr/local/bin 或 $PATH 中的任何其他目录
$ cd /usr/local/bin
创建一个包含以下内容的可执行脚本(比如 node-debug)
#!/bin/bash
node --debug $@
使其可执行:
$ sudo chmod 777 /usr/local/bin/node-debug
现在你可以像这样运行主管了:
$ supervisor -x node-debug script.js
PS:四舍五入:
su
echo '#!/bin/bash
node --debug $@' > /usr/local/bin/node-debug
chmod 777 /usr/local/bin/node-debug
【讨论】:
debugger listening on port 5858 Failed to open socket on port 5858, waiting 1000 ms before retrying 而手动node --debug 工作正常。
--nodejs 节点可执行文件有一些您可以设置的有用选项,例如 --debug、--debug-brk 和--max-stack-size。使用此标志将选项直接转发到 Node.js。
我试过了,效果很好:
主管 -- --nodejs --debug app.coffee
您可以像这样添加其他参数:
主管 -w 。 -n 错误 -- --nodejs --debug app.coffee
【讨论】:
“所有参数都传递给子进程。node-dev --debug server.js 将调试您的应用程序,而不是主管本身。”
在 $HOME/nodetest 中创建一个“test.js”node.js 脚本
第一个终端(debug模式下运行node,debug会监听5858端口,node-dev会重新加载修改过的文件):
cd $HOME/nodetest
npm install node-dev
node_modules/.bin/node-dev --debug test.js
第二个终端(为基于 WebKit 的浏览器启动 web 检查器,检查器连接到调试器的 5858 端口并监听 8080 端口):
cd $HOME/nodetest
npm install node-inspector
node_modules/.bin/node-inspector
在基于 WebKit 的浏览器(Chrome、Safari 等)中打开此 URL:
http://0.0.0.0:8080/debug?port=5858
单击“脚本”并在代码中设置断点。
【讨论】:
使用node-supervisor github page 中记录的-x 标志
supervisor -w . -x 'node --debug' app.js
但这不适用于coffeescript,所以你必须使用
supervisor -w . -x 'coffee --debug' app.js
【讨论】:
coffee --debug 能够正常工作是太过分了:P