如何设置nodejs调试模式不听127.0.0.1

Posted

技术标签:

【中文标题】如何设置nodejs调试模式不听127.0.0.1【英文标题】:How to set nodejs debug mode don't listen 127.0.0.1 【发布时间】:2012-02-14 20:43:11 【问题描述】:

我想在 Eclipse 中远程调试 nodejs 程序。我使用调试选项启动节点脚本。

$node debug script.js

但我无法连接到 Eclispe 中的节点。当我 netstat 节点的 TCP 端口时。我发现该节点仅在调试模式下侦听 127.0.0.1。所以我无法从不同的计算机连接它。 但是我找不到任何可以更改为收听任何地址的启动选项。 有人知道让它监听任何地址以在其他计算机上进行远程调试吗?

【问题讨论】:

【参考方案1】:

如果其他人偶然发现:您可以在设置端口时将节点调试设置为任何地址

node --debug=169.168.1.2:5858 app.js

如果这将是您的远程机器的 ip,或者对每台机器更好

node --debug=0.0.0.0:5858 app.js

但请注意,仅当您在自己的专用网络中调试并为所有人开放时,才应使用第二个选项

【讨论】:

完美,这是我连接到在 docker 容器中运行的应用程序所需要的。 --debug 已弃用,现在使用 --inspect【参考方案2】:

这就是我在 linux Debian 中所做的:

安装平衡器

sudo apt-get install balance -y

然后在平衡器中创建一个路由,将您的 5858 端口重新路由到 5859

balance 5859 127.0.0.1:5858

启动您的应用

node --debug app.js

现在您可以通过端口 5859 从任何地方访问它

【讨论】:

非常感谢。唯一有效的解决方案【参考方案3】:

我正在研究从 deps/v8/src/debug-agent.* 到 deps/v8/src/platform-posix.cpp(对于 linux)到 POSIXSocket::Bind 方法的 V8 代码,它可以'似乎对此没有任何选择(除非我错过了什么)。

我打赌你要么破解它并重新编译节点,要么你需要在你的节点进程旁边构建一个小型代理。

【讨论】:

【参考方案4】:

Here's a great tut on debugging nodejs from eclipse。注意底部有一个脚本作者用来将 localhost:5858 转发到远程服务器的 127.0.0.1。你也可以use an SSH tunnel。

所以,总结一下:

    node --debug app.js 开始您的脚本 像在本地调试一样配置 eclipse 使用 node_g 脚本或配置 SSH 隧道 既然您的代码没有错误,那就去度假吧

【讨论】:

我尝试了 3 种方法。首先是脚本(教程无效地说它不再有用了),但它需要本地 nodejs 安装。其次,我尝试在我的服务器上使用余额,但它没有用。最后我尝试了一个使用 putty 的 SSH 隧道。这很好用,我已经使用 putty 来启动 nodejs,所以这意味着我没有额外的工作。此外,这也是隧道的用途。【参考方案5】:

通过 SSH 会话远程调试 nodejs:

1. install balance on Linux: https://balance.inlab.net/overview/
2. run the command: balance -df 8585 127.0.0.1:5858 > /tmp/balance.out 2>&1 &
3. ssh to your remote Linux box (tunnel will be created 8585 > 5858 > nodejs)
4. run your node script on server: node --debug-brk --nolazy ./myNodeApp.js
5. kick off debug session in WebStorm alt-d to port 8585

现在您可以通过 SSH 会话安全地进行远程调试

【讨论】:

以上是关于如何设置nodejs调试模式不听127.0.0.1的主要内容,如果未能解决你的问题,请参考以下文章

apache和nodejs共享80怎么设置?

Docker Compose 在 MySQL 和 NodeJS 中出现错误 ECONNREFUSED 127.0.0.1:3306

如何调试Node.js

flutter如何调试夜神模拟器

连接 ECONNREFUSED 127.0.0.1:3000 - DB Mongoose 与 Nodejs

Redis主从加Sentinel模式部署