如何使用PhpStorm / WebStorm连接到远程Node.js调试会话?

时间:2019-03-04 11:22:52

标签: node.js docker docker-compose webstorm remote-debugging

关于inspect的前身,似乎有一个similar question,我想使用inspect

我创建了一个基本的docker-compose堆栈,从中运行nodejs应用程序。我想听调试器会话并在本地WebStorm中调试我的JavaScript代码。

我通过以下方式进入容器

docker exec -it my_container bash

然后使用通过inspect运行的调试器调用我的nodejs脚本:

node --inspect ./cli.js start mytask
Debugger listening on ws://127.0.0.1:9229/81006264-163c-40d7-bd75-64c5e4fca618
For help see https://nodejs.org/en/docs/inspector

链接的帮助对我没有帮助,因为它假定我想使用inspect进行本地运行:

  

JetBrains WebStorm 2017.1+和其他JetBrains IDE创建新的   Node.js调试配置,然后单击“调试”。 --inspect将由   Node.js 7+的默认设置。禁用取消选中   IDE注册表中的js.debugger.node.use.inspect。

我想从主机WebStorm附加到docker容器内的运行。

因此,当我运行脚本时,它永远不会碰到任何断点而完成。

我想我必须听调试器,但是我不知道怎么做。

我希望本地WebStorm连接到nodejs调试器。我希望能够在WebStorm中进行调试,就像通过WebStorm本身运行nodejs脚本一样。

我尝试深入研究docs,但不确定如何遵循指南。

我在docker-compose.yml中将默认调试端口9229暴露给了本地计算机:

version: "3"
services:
    my_container:
        build: .
        command: "bash"
        hostname: my_container
        tty: true
        environment:
            TERM: xterm
        ports:
            - "9229:9229"

我不知道如何在WebStorm中收听nodejs调试器。

2 个答案:

答案 0 :(得分:2)

您必须使用node --inspect-brk=0.0.0.0:9229启动应用程序(由于默认情况下Node.js仅绑定到本地主机,因此必须使用0.0.0.0),然后使用Attach to Node.js/Chrome运行配置来附加调试器。 端口应设置为9229

答案 1 :(得分:0)

这是一种解决方法,因为我仍然非常想使用WebStorm的调试器,这就是为什么这不是我的解决方案,而是至少提供了一种调试方法的原因:

对于chrome的开发工具,您可以使用:

node --inspect-brk=0.0.0.0:9229 ./cli.js start mytask

它将显示在:

chrome://inspect/#devices

您可以单击检查并通过脚本进行调试。

--inspect-brk将在第一行中断,我必须使用ip 0.0.0.0作为开发工具才能使用它。