我想从我的开发机器连接到我在AWS(node -debug app.js)上以调试模式运行的节点服务器,并能够远程调试我的应用程序.
两个问题:
我可以使用node-inspector执行此操作吗?我希望可以,但是node-inspector无法在我的AWS实例上安装.
任何可以让我这样做的替代方案?
R. Itzi.. 40
在tepez的答案的帮助下,以下对我有用(Node Inspector v0.12.2):
在我的机器上:
ssh -L 8080:127.0.0.1:8080@ -N
在远程服务器上:
node-debug --cli
并在浏览器中输入以下地址:
127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858
感谢您显示URL以及SSH命令.如果没有它,很容易混淆.对我来说很棒! (4认同)
Andrey Sidor.. 23
使用dev机器中的ssh转发远程调试器端口
ssh -L 5858:127.0.0.1:5858 ubuntu@some.ec2.host.com
现在,您可以node-inspector
像调试器在本地运行一样启动.
您也可以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
将其粘贴到Chrome浏览器中
请享用 :)
如果您正在使用,pm2
只需在您的ecosystem.js上添加此项
"apps": [{ "name": "myapp", "script": "index.js", "node_args": ["--inspect"], ...
还有一个0.0.0.0
用于收听外部请求的选项:
node-debug --web-host=0.0.0.0 --cli app.js
并访问此地址进行调试:
http://<the-domain>:8080/?port=5858
如果HTTP/2可用,那会更好,因为有很多小文件.
您也可以指定--web-host
参数.
node-inspector --web-host host.amazonaws.com
使用dev机器中的ssh转发远程调试器端口
ssh -L 5858:127.0.0.1:5858 ubuntu@some.ec2.host.com
现在,您可以node-inspector
像调试器在本地运行一样启动.
请允许我提供替代方案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
输入地址并连接远程目标后,您将在DevTools的左上角看到Node.JS图标
单击NodeJS徽标以启动DevTools Node Debugger
下面的步骤1,3,4的屏幕截图.
这对我有用:
在服务器上启动node-inspector.
用--debug
旗帜启动远程服务器上的debugee.
请注意调试器侦听的端口,即Debugger listening on port DEBUG_PORT
消息.
为端口创建一个ssh隧道8080
,而不是DEBUG_PORT
像Andrey Sidorov的回答所暗示的那样.
SERVER_API:8080/debug?ws=127.0.0.1:8080&port=DEBUG_PORT
在浏览器中打开一个voilà.
Node Inspector v0.10.1
在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