【问题标题】:Run node.js application in debug with supervisor使用主管在调试中运行 node.js 应用程序
【发布时间】:2011-09-22 00:28:04
【问题描述】:

我正在使用 supervisor 自动重新加载我的 node.js,例如

supervisor -w . app.js

但是我不知道如何让主管在调试中运行 node.js 进程,例如相当于

node --debug app.coffee

有人有什么想法吗?

【问题讨论】:

  • 主管链接已损坏。网页显示“Posterous Spaces 不再可用”

标签: node.js node-supervisor


【解决方案1】:

这也有效(而且您不需要单独的 bash 脚本):

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

【讨论】:

  • 这应该是公认的答案。谢谢分享。
  • 是的,这很简单,也适用于“高级”检查员,例如运行 Express:DEBUG=myapp:* supervisor -- --inspect bin/www。我在尝试使用 -x 参数时遇到了事件错误,但这种替代参数格式有效。
【解决方案2】:

此解决方案适用于 *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 工作正常。
【解决方案3】:

来自CoffeeScript site

--nodejs 节点可执行文件有一些您可以设置的有用选项,例如 --debug、--debug-brk 和--max-stack-size。使用此标志将选项直接转发到 Node.js。

我试过了,效果很好:

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

您可以像这样添加其他参数:

主管 -w 。 -n 错误 -- --nodejs --debug app.coffee

【讨论】:

    【解决方案4】:

    node-dev

    node-dev on Github

    “所有参数都传递给子进程。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
    

    单击“脚本”并在代码中设置断点。

    【讨论】:

      【解决方案5】:

      使用node-supervisor github page 中记录的-x 标志

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

      但这不适用于coffeescript,所以你必须使用

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

      【讨论】:

      • 试过了,但它进入了一个无限循环的调试:使用'coffee --debug app.coffee'启动子进程调试:execvp():没有这样的文件或目录
      • @JamesHollingworth 我认为期望coffee --debug 能够正常工作是太过分了:P
      猜你喜欢
      • 2017-04-19
      • 2016-07-12
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多