带有Docker的Intellij中的远程调试nodejs应用-端口已分配

时间:2019-07-18 08:40:11

标签: node.js windows docker debugging intellij-idea

我想使用Docker上运行的Intellij和node.js解释器开始调试node.js应用。在运行该应用程序时,当我尝试调试时出现错误:

  

运行“ index.js”时出错             com.github.dockerjava.api.exception.InternalServerErrorException:   {“ message”:“驱动程序无法对外部连接进行编程   端点focused_poincare   (a17137973880d1be7c6a74fc142184fdda31e0dec8ebd539b09d9dbe4cf70014):   启动用户态代理时出错:绑定0.0.0.0:55578失败:端口为   已经分配”}

根据documentation配置了远程解释器。我创建了一个新的Node.js运行/调试配置,并输入了以下数据: node.js remote interpreter configuration

调试失败的原因可能是什么?

我使用:

  • Intellij Idea Ultimate v.2019.1.4预览版
  • Intellij NodeJS插件191.7479.1,NodeJS远程解释器插件191.6014.8和Docker插件191.7141.44
  • Docker桌面社区v。2.0.0.3

编辑:处理评论:

本地调试有效。我尝试运行的文件(index.js)仅包含console.log('Hello world!'),因此我不会自行产生任何子进程。我的主机系统具有Windows 10 Pro作为操作系统,因此,为了检查主机系统上的开放端口,我使用了netstat -an | find "55578",但未返回任何内容。此外,如果我尝试使用docker run -it -p 55578:55578 node从命令行手动运行docker,那么所有程序都会运行,并且不会给出错误。

此外,每次我尝试远程调试时,Intellij在错误消息中给出的端口号似乎都是随机的高端口号。我尝试在收到错误消息后立即寻找打开的端口,但没有找到一个打开的端口,该端口的打开由Intellij报告,并且确实出现在输出中:enter image description here

我的运行/调试配置:

enter image description here

我的Docker配置(我必须在Docker配置中选中“在不带TLS的tcp:// localhost:2375上暴露守护程序”,以使Intellij和Docker一起玩):

enter image description here

编辑:当我在“运行/调试配置” Intellij窗口(按this bug report)中将“ --inspect-brk=0.0.0.0:55432添加为“节点参数”时,容器nad程序启动,但是调试似乎是无操作的(例如程序不会在断点处停止。

1 个答案:

答案 0 :(得分:0)

更新到Intellij v.2019.2之后,我能够使用问题中已经提到的workaround来调试容器。

我在“运行/调试”配置的“节点参数”选项中添加了一个参数|(请参见下图),一切似乎都可以正常工作,包括断点。 enter image description here