【发布时间】:2014-01-30 04:47:15
【问题描述】:
我想从我的开发机器连接到在 AWS (node --debug app.js) 上以调试模式运行的节点服务器,并能够远程调试我的应用程序。
两个问题:
我可以用 node-inspector 做到这一点吗?我希望可以,但节点检查器无法安装在我的 AWS 实例上。
任何替代方案可以让我这样做吗?
【问题讨论】:
标签: node.js debugging amazon-web-services
我想从我的开发机器连接到在 AWS (node --debug app.js) 上以调试模式运行的节点服务器,并能够远程调试我的应用程序。
两个问题:
我可以用 node-inspector 做到这一点吗?我希望可以,但节点检查器无法安装在我的 AWS 实例上。
任何替代方案可以让我这样做吗?
【问题讨论】:
标签: node.js debugging amazon-web-services
使用 ssh 从您的开发机器转发远程调试器端口
ssh -L 5858:127.0.0.1:5858 ubuntu@some.ec2.host.com
现在您可以启动node-inspector,就像调试器在本地运行一样。
【讨论】:
--inspect=0.0.0.0:9229 对任何人都开放,除非您设置了防火墙。扩展这个答案(因为我自己一开始并不理解):ssh -L <local-port>:127.0.0.1:<remote-port> <server-ip/domain>。您可能已经将 9229 用于本地应用程序,所以 local-port 必须是其他东西(我选择了 9339),“远程端口”默认为 9229。然后你必须保持 ssh 连接打开,进入 Chrome 的节点目标并添加localhost:9339(或你选择的任何端口)。瞧。
您也可以指定--web-host 参数。
node-inspector --web-host host.amazonaws.com
【讨论】:
这对我有用:
--debug 标志在远程服务器上启动被调试者。Debugger listening on port DEBUG_PORT消息。8080 创建一个 ssh 隧道,而不是像 Andrey Sidorov 的回答所建议的那样为 DEBUG_PORT 创建一个 ssh 隧道。SERVER_API:8080/debug?ws=127.0.0.1:8080&port=DEBUG_PORT 瞧。节点检查器 v0.10.1
【讨论】:
在tepez's 答案的帮助下,以下内容对我有用(Node Inspector v0.12.2):
在我的机器上:
ssh -L 8080:127.0.0.1:8080 <username>@<host> -N
在远程服务器上:
node-debug --cli <appname>
并在浏览器中输入以下地址:
127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858
【讨论】:
使用0.0.0.0 监听来自外部的请求的另一个选项:
node-debug --web-host=0.0.0.0 --cli app.js
并访问此地址进行调试:
http://<the-domain>:8080/?port=5858
如果 HTTP/2 可用会更好,因为有很多小文件。
【讨论】:
您也可以在远程机器上使用node --inspect。
node --inspect myapp.js 启动您的节点
ssh -L 9229:127.0.0.1:9229 myuser@myserver -N chrome-devtools://devtools/remote/serve_file/@60cd6e859b9ff284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/bef2ae68
享受:)
如果您使用pm2,只需将其添加到您的生态系统.js
"apps": [{
"name": "myapp",
"script": "index.js",
"node_args": ["--inspect"],
...
【讨论】:
请允许我使用node --inspect 提出替代方案。我有同样的需求,虽然在 Windows 环境中,我相信这应该适合你。
远程机器(使用 Node 6.10.2、Windows Server 2012 测试)
node --inspect=0.0.0.0:9229 <appname>.js
本地机器(在 Win 10、Chrome 60.0.3112.90 上测试)
在 Chrome DevTools 中 - 点击右上角的垂直省略号菜单:
<remote-ip>:9229
以下步骤 1、3、4 的屏幕截图。
【讨论】:
0.0.0.0 在容器级别,这实际上是主机上的 127.0.0.1。