我想从我的开发机器连接到我在AWS(node -debug app.js)上以调试模式运行的节点服务器,并能够远程调试我的应用程序。
两个问题:
我可以使用node-inspector执行此操作吗?我希望可以,但是node-inspector无法在我的AWS实例上安装。
任何可以让我这样做的替代方案?
答案 0 :(得分:40)
在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
答案 1 :(得分:23)
使用dev机器中的ssh转发远程调试器端口
ssh -L 5858:127.0.0.1:5858 ubuntu@some.ec2.host.com
现在您可以启动node-inspector
,就像调试器在本地运行一样。
答案 2 :(得分:12)
使用0.0.0.0
收听来自外部的请求的另一个选项:
node-debug --web-host=0.0.0.0 --cli app.js
并访问此地址进行调试:
http://<the-domain>:8080/?port=5858
如果HTTP / 2可用,那会更好,因为有很多小文件。
答案 3 :(得分:9)
您也可以指定--web-host
参数。
node-inspector --web-host host.amazonaws.com
答案 4 :(得分:9)
请允许我使用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中 - 点击右上角的垂直省略号菜单:
答案 5 :(得分:7)
您也可以在远程计算机中使用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"],
...
答案 6 :(得分:5)
这对我有用:
--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
vo。Node Inspector v0.10.1