远程debuggingAWS上托pipe的节点应用程序

我想从我的开发机器上连接到AWS上的节点服务器(节点–debug app.js)上以debugging模式运行,并且能够远程debugging我的应用程序。

两个问题:

  • 我可以用节点检查器做到这一点吗? 我希望我能,但节点检查器无法安装在我的AWS实例。

  • 任何替代scheme,将允许我这样做?

在tepez的回答的帮助下,下面的工作对我来说(Node Inspector v0.12.2):

在我的机器上:

ssh -L 8080:127.0.0.1:8080 <username>@<host> -N 

在远程服务器上:

 node-debug --cli <appname> 

并在浏览器中input以下地址:

 127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 

使用ssh从您的开发机器转发远程debugging器端口

 ssh -L 5858:127.0.0.1:5858 ubuntu@some.ec2.host.com 

现在,您可以像debugging器在本地运行一样启动node-inspector器。

还有一个select是使用0.0.0.0来听取外部的请求:

 node-debug --web-host=0.0.0.0 --cli app.js 

并访问这个地址进行debugging:

 http://<the-domain>:8080/?port=5858 

如果HTTP / 2是可用的,因为有很多小文件。

你也可以指定--web-host参数。

 node-inspector --web-host host.amazonaws.com 

这对我来说是有效的:

  1. 在服务器上启动节点检查器。
  2. 使用--debug标志启动远程服务器上的--debug
  3. 注意debugging器监听的端口,即Debugger listening on port DEBUG_PORT消息。
  4. 创build一个8080端口的ssh隧道,而不是像Andrey Sidorov的答案所示的DEBUG_PORT
  5. 在浏览器中打开SERVER_API:8080/debug?ws=127.0.0.1:8080&port=DEBUG_PORT

节点检查器v0.10.1

您也可以在远程机器上使用node --inspect

  1. node --inspect myapp.js启动节点
  2. 然后在本地ssh -L 9229:127.0.0.1:9229 myuser@myserver -N
  3. 在日志头中search这样的string并将其复制到chrome-devtools://devtools/remote/serve_file/@60cd6e859b9ff284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/bef2ae68
  4. 将其粘贴到您的Chrome浏览器中

请享用 :)

如果您正在使用pm2只需在您的pm2添加此项

 "apps": [{ "name": "myapp", "script": "index.js", "node_args": ["--inspect"], ... 

允许我使用node --inspect来提供一个替代scheme。 我有同样的需求,虽然在Windows环境中,我相信这应该为你工作。

远程机器 (通过Node 6.10.2,Windows Server 2012testing)

node --inspect=0.0.0.0:9229 <appname>.js

本地计算机 (使用Win 10,Chrome 60.0.3112.90testing)

在Chrome DevTools中 – 单击右上angular的垂直省略号菜单

  1. 转到:更多工具 – >远程设备
  2. networking目标下单击添加地址
  3. input<remote-ip>:9229
  4. input地址并连接远程目标后,您将看到DevTools左上方的Node.JS图标
  5. 点击NodeJS Logo启动DevTools Node Debugger

下面的步骤1,3,4的屏幕截图。

DevTools菜单

网络目标 远程目标已连接