我想连接到在AWS上以调试模式运行的节点服务器(node --debug app.js),并能够远程调试我的应用程序。
两个问题:
我能用node-inspector做到这一点吗?我希望能够,但是node-inspector无法安装在我的AWS实例上。
有任何替代方案可以让我做到这一点吗?
我想连接到在AWS上以调试模式运行的节点服务器(node --debug app.js),并能够远程调试我的应用程序。
两个问题:
我能用node-inspector做到这一点吗?我希望能够,但是node-inspector无法安装在我的AWS实例上。
有任何替代方案可以让我做到这一点吗?
在 tepez 的 回答的帮助下,以下内容对我有用(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
从您的开发机器使用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),'remote-port' 默认情况下将是9229。然后,您必须保持ssh连接打开,在Chrome的Node目标中添加 localhost:9339
(或您选择的任何端口)。完成了。 - Kenmore允许我介绍一种使用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开发者工具中 - 单击右上角的垂直省略菜单:
<remote-ip>:9229
下面是步骤1、3、4的截图。
0.0.0.0
在容器级别上,因此在主机上实际上是 127.0.0.1。 - halfer还有一种使用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
,只需在您的ecosystem.js中添加此内容。
"apps": [{
"name": "myapp",
"script": "index.js",
"node_args": ["--inspect"],
...
同时,你可以指定--web-host
参数。
node-inspector --web-host host.amazonaws.com
--debug
标志启动debugee。Debugger listening on port DEBUG_PORT
消息。8080
创建ssh隧道,不要像Andrey Sidorov的答案建议的那样使用DEBUG_PORT
。SERVER_API:8080/debug?ws=127.0.0.1:8080&port=DEBUG_PORT
,然后就可以了。Node Inspector v0.10.1