如何设置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的主要内容,如果未能解决你的问题,请参考以下文章
Docker Compose 在 MySQL 和 NodeJS 中出现错误 ECONNREFUSED 127.0.0.1:3306