I have a simple console node.js app that is running on a remote server. I would like to debug it remotely using the Chrome DevTools. How can I do that?
5 Answers 5
Follow this instruction here Another good article here
Let's say you are running Node on remote machine, remote.example.com, that you want to be able to debug. On that machine, you should start the node process with the inspector listening only to localhost (the default).
$ node --inspect server.js
Now, on your local machine from where you want to initiate a debug client connection, you can setup an ssh tunnel:
$ ssh -L 9221:localhost:9229 [email protected]
Then on your local machine in the Chrome browser go to this address:
chrome://inspect/#devices
You should see something like this:
Once you click inspect you should see the familiar Chrome developers tool window. Good luck!
5 Comments
Configure button, and add localhost:9221 to the Target Discovery Settings.node --inspect=0.0.0.0 server.js. The configure step above is critical.--inspect-brk option in node command line. It will prevent script from starting , so you may start it after debugger connectedWith Windows Client:
on remote server:
$ node --inspect server.js
On your local use Putty to create ssh tunel.
Click On Add botton:
On session tab Click to save!
And Click on Open.
You can check Tunnel is open with the following command:
netstat -a -n | grep 9221
On Your local open Chrome navigate to:
chrome://inspect/#devices
2 Comments
There are security considerations, but the following can be an easy/safe solution if on the same network:
On server, launch your app:
node --inspect=0.0.0.0:9229 server.js
Rather than having node bind strictly to localhost, you can have it bind to any network interface via 0.0.0.0:9229.
Now on your PC, open chrome and goto chrome://inspect/#devices . Chrome has changed the UI accouple times but you should be able to configure your remote server IP as a target. E.g. [server_ip]:9229. Note, this would be safest to use on a local network where server_ip is a local IP address. If you are debugging against a public IP address there would be a risk of someone else attaching.
Comments
With Windows Client and Visual Studio Code
Here's a variation of Peter's answer, using Visual Studio Code instead of Chrome.
- Apply all steps from @Peter's answer to setup port forwarding in Putty (be sure to change
remotetolocalas pointed out in the first comment to @Peter's answer). - In Visual Studio Code, add the following configuration:
{
// 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>/**"
]
},
]
}
- Use
inpect-brkto pause your program until the Visual Studio Code has connected to the remote host:
node --inspect-brk your-node-program.js
Comments
You can follow the steps
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.