如何使用Chrome DevTools调试远程Node.js应用程序

17

我有一个简单的控制台node.js应用程序,正在远程服务器上运行。我想使用Chrome DevTools远程调试它。我该怎么做?

5个回答

27

按照这里的指示here

另一篇好文章在这里here

假设您正在远程计算机remote.example.com上运行Node,并想要进行调试。 在该计算机上,您应该启动带有检查器仅侦听localhost(默认值)的节点进程。

$ node --inspect server.js

现在,在您想要启动调试客户端连接的本地计算机上,您可以设置ssh隧道:

$ ssh -L 9221:localhost:9229 user@remote.example.com

然后在您的本地计算机的Chrome浏览器中转到地址:

chrome://inspect/#devices

您应该看到像这样的东西:

enter image description here

点击inspect后,您应该看到熟悉的Chrome开发人员工具窗口。祝你好运!


5
谢谢!请注意,您可能需要先单击“配置”按钮,并将“localhost:9221”添加到“目标发现设置”中。 - lionscribe
我如何在没有SSL的情况下完成这个任务? - Gobliins
你是指SSH吗? - jramirez
我在局域网中使用 node --inspect=0.0.0.0 server.js,无需SSH即可使用。上面的配置步骤非常关键。 - Stephen Shank
另外,在Node命令行中还有--inspect-brk选项。它将防止脚本启动,因此您可以在调试器连接后启动它。 - Eugene

6

使用Windows客户端:

在远程服务器上:

$ node --inspect server.js

在本地使用Putty创建SSH隧道。

Connection -> SSh -> Tunnels

点击添加按钮:

After Add button

在“Session”选项卡中点击保存!

enter image description here

然后单击“打开”按钮。

您可以使用以下命令检查隧道是否已打开:

netstat -a -n | grep 9221

在本地计算机上,打开Chrome并导航到:

chrome://inspect/#devices


2
我不得不做一个更改:在PuTTy隧道配置中,我必须指定“本地”而不是“远程”。然后它就像魔法般地工作了。 - Randy Voet
在我的环境中,Chrome 无法可靠地启动调试会话。因此,我改用 Visual Studio Code,调试器立即打开。请参见我在此页面上的答案。 - caram

2

存在安全考虑,但如果在同一网络中,以下可以是一种简单/安全的解决方案:

在服务器上启动您的应用程序:

node --inspect=0.0.0.0:9229 server.js

与其让节点严格绑定到本地主机,您可以通过0.0.0.0:9229将其绑定到任何网络接口。

现在在您的个人电脑上,打开Chrome并转到chrome://inspect/#devices。Chrome已经多次更改了UI,但您应该能够将远程服务器IP配置为目标。例如:[server_ip]:9229。请注意,这只适用于在本地网络上使用的最安全的情况,其中server_ip是本地IP地址。如果您针对公共IP地址进行调试,则存在其他人附加的风险。


1

使用Windows客户端和Visual Studio Code

这是Peter答案的一个变体,使用Visual Studio Code而不是Chrome。

  1. 按照@Peter答案中的所有步骤设置Putty中的端口转发(确保根据@Peter答案的第一条评论更改remotelocal)。
  2. 在Visual Studio Code中添加以下配置:
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Remote",
            "address": "127.0.0.1",
            "port": 9221,
            "localRoot": "${workspaceFolder}/npm",
            "remoteRoot": "/abs/path/npm",
            "skipFiles": [
                "<node_internals>/**"
            ]
        },
     ]
}

使用inspect-brk命令来暂停你的程序,直到Visual Studio Code连接到远程主机:
node --inspect-brk your-node-program.js

-1
你可以跟随以下步骤。
1)Run the application in remote
2)Open application in chrome
3)Open Developer Tools--->Sources
4)Ctrl + p
5)Open file you want to debug  there<filename.js>
6)Place debug points in your now opened file.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接