无法从 WebStorm 调试远程 docker node.js 应用程序

Posted

技术标签:

【中文标题】无法从 WebStorm 调试远程 docker node.js 应用程序【英文标题】:Unable to debug remote docker node.js app from WebStorm 【发布时间】:2019-06-29 05:13:22 【问题描述】:

我正在尝试从 WebStorm 中将远程调试器附加到在 docker 中运行的 node.js 应用程序,但我无法做到。我可以从 IDE 成功运行 docker app 但无法调试它。

我正在按照本指南设置远程解释器: https://www.jetbrains.com/help/webstorm/running-and-debugging-node-js.html#node_debugging_overview

我的 docker-compose.yaml 看起来像这样:

ports:
  - 8080:8080
  - 9229:9229

command: [ "npm", "run","debug" ]

package.json 的调试脚本定义如下:

"debug":"node --inspect-brk"

如果有人设置了这个,你能建议我做错了什么吗?

【问题讨论】:

【参考方案1】:

你需要绑定到容器中的所有接口

--inspect=0.0.0.0

--inspect-brk=0.0.0.0

Command-line options

但是这在生产环境中是危险的 Exposing the debug port publicly is unsafe

【讨论】:

感谢您的所有回复:这就是我的调试脚本现在的样子:"develop":"NODE_ENV=development node -- --inspect=0.0.0.0:8090 ./baseFille. js”另一个奇怪的事情是,当我向端口 8090(假设是我的调试器端口)发送 curl 请求时,我没有得到任何响应。这可能是我无法调试的问题吗?【参考方案2】:

目前不支持使用 Docker Compose 作为 Node.js 远程解释器,请参阅 WEB-23404。 所以你需要使用 Attach to Node.js/Chrome 运行配置来附加到你在 docker 中运行的 node.js 应用程序:

但是,由于节点默认绑定到 localhost,因此无法从外部访问,因此您需要将 npm 脚本更改为 "debug":"node --inspect-brk=0.0.0.0:9229",正如 @ponury-kostek 中提到的那样 回答

【讨论】:

所以我尝试使用它,但由于某种原因它突然分解并出来了。给出一条错误消息“驱动程序在端点上编程外部连接失败”。 看起来与调试无关。请参阅github.com/docker/compose/issues/3277 获取一些提示

以上是关于无法从 WebStorm 调试远程 docker node.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 中远程调试节点应用程序

无法在 docker 容器中远程调试 Java 9 Tomcat 9

如何使用源映射远程调试 Node.js 应用程序(使用 WebStorm)

Webstorm远程调试+调试时编辑本地javascript文件

从 Docker 容器内部使用 XDebug 进行远程调试不起作用

Webstorm- Nodemon + Typescript + Docker - 调试器已连接但断点不起作用