使用intellij远程调试节点js服务器

Posted

技术标签:

【中文标题】使用intellij远程调试节点js服务器【英文标题】:Remote Debugging of node js server using intellij 【发布时间】:2016-07-24 03:03:33 【问题描述】:

看到很多关于远程 Node js 服务器调试的帖子,并尝试了很多他们的解决方案,但没有设法让我的配置正常工作

我在 Windows PC 上安装了 Intellij 使用以下“Node.js 远程调试”配置: 主机:my-server.dev.com 端口:5858

节点服务器本身安装在 UBUNTU 上,并在其上定义了以下端口转发规则: socat TCP-LISTEN:5858,fork TCP:localhost:6000

并且服务器使用以下命令运行(集群: /usr/local/n/versions/node/0.10.44/bin/node --debug=6000 /opt/play/play-server/main.js)

Intellij 将会话显示为已连接但不能在断点处中断

【问题讨论】:

【参考方案1】:

我们采取了几个步骤来解决这个问题: 1.启动要使用的脚本执行器:“n use 0.10.44 --debug” //(这是我的脚本)

forever \
      --pidFile $PIDFILE \
      -a \
      -l $LOGFILE \
      --minUptime $MIN_UPTIME \
      --spinSleepTime $SPIN_SLEEP_TIME \
      start -c "n use 0.10.44 --debug" $APPLICATION_PATH 2>&1 > /dev/null &
    RETVAL=$?
    在远程集群上创建转发规则(此处为端口 6000) socat TCP-LISTEN:5858,fork TCP:localhost:6000

    在你 fork 之前的节点服务器中:

    var debug = process.execArgv.indexOf('--debug') !== -1; 如果(调试) //设置一个未使用的端口号。 process.execArgv.push('--debug=' + (6000)); var childProcess = cluster.fork();

这允许我使用我在问题中设置的相同 intellij 配置仅调试一个集群进程

【讨论】:

以上是关于使用intellij远程调试节点js服务器的主要内容,如果未能解决你的问题,请参考以下文章

flinkFlink 使用IntelliJ IDEA 进行远程调试代码

使用 Intellij 在远程服务器上部署/调试 java 代码

Idea IntelliJ远程调试教程

图文并茂教你学会使用 IntelliJ IDEA 进行远程调试

使用 IntelliJ 12 部署和调试远程 Jetty

使用 IntelliJ IDEA 远程调试 Tomcat