节点检查器无法打开套接字

Node-Inspector Failed to open socket

我按照这里的指示操作:https://github.com/node-inspector/node-inspector

很简单。 npm install node-inspector。在一个 shell 运行 node-inspector 和另一个 运行 node --debug app.js 中。 Shell 为调试器吐出一个带有特定端口的本地主机地址。在浏览器中打开该地址——它会加载您的代码。从那里添加断点、调试网络等。

但这不起作用。 以下消息无休止地登录我的 shell:

Failed to open socket on port 5858, waiting 1000 ms before retrying

..没有连接。

所以我的问题是有没有人遇到过这个问题并成功找到了解决方案。很想让这个工作,会非常有用。我在服务器端调试器方面的唯一经验是 Ruby 的 Byebug,这是小菜一碟。

打印您看到的消息是因为有另一个进程在侦听端口 5858。要么是不同的应用程序,要么只是调试器下节点进程的另一个实例。

基于此答案下方评论的更新

如果您的应用程序通过 Node.js 核心模块 "cluster" 在集群模式下 运行,那么您最终会遇到多个工作进程,每个工作进程都在尝试监听在端口 5858 上。

Node Inspector 无法同时调试多个工作进程。您必须选择一个进程并仅在该进程中启用调试器。当您通过 node --debug 启动应用程序时,所有进程都会尝试启用调试器,因此您无法使用此命令。

相反,您必须:

  1. 在不启用调试器的情况下启动您的应用程序。
  2. 然后您需要找到您要调试的工作进程的 pid(进程 ID)。
  3. 获得 PID 后,需要在目标进程中启用调试器。您可以在 UNIX 上使用 运行 kill -1 <pid>,或者使用适用于所有平台的 node debug -p <pid>。在继续之前不要忘记退出 node debug
  4. 一旦目标进程在 5858 上侦听调试器,您就可以按照通常的方式启动 Node Inspector。

我的回答基于以下博客post:https://strongloop.com/strongblog/whats-new-nodejs-v0-12-debugging-clusters/,查看更多详细信息。