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

Posted

技术标签:

【中文标题】如何使用 PhpStorm / WebStorm 连接到远程 nodejs 调试会话?【英文标题】:How to connect to a remote nodejs debug session using PhpStorm / WebStorm? 【发布时间】:2019-07-25 16:56:31 【问题描述】:

似乎有一个similar question,因为它是inspect 的前身,我想使用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 调试器。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

它将显示在:

chrome://inspect/#devices

您可以通过脚本点击检查和调试。

--inspect-brk 将在第一行中断,我必须使用 ip 0.0.0.0 让开发工具来获取它。

【讨论】:

以上是关于如何使用 PhpStorm / WebStorm 连接到远程 nodejs 调试会话?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本与 phpstorm 或 webstorm 中的特定字符对齐?

TypeScript 自动导入中的 WebStorm/PhpStorm 双引号

PhpStorm WebStorm angular-cli 项目;如何关闭棉绒

WebStorm / PhpStorm在TypeScript自动导入中引用双引号

Webstorm 或 PhpStorm证书被占用如何解决

如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作