sandbox-debugger

Debug a Node.js process anywhere using chrome://inspect or node-inspect
Interactive debugging using inspect, debug the same way you do with a local process.
Supports a Node.js process running
How it works?
Node opens a websocket when in debug mode, both the sandbox server and client work by piping the websocket data via the broker.
Run sandbox server
The server is used as a gatekeeper for the debug messages.
npx sandbox-debugger-server
or
ᐅ docker run \
--name sandbox-debugger \
-ti \
--rm \
-p 9229:9229 \
jameskyburz/sandbox-debugger
The server will output
Debug server started!
- To debug a new process:
export DEBUG_PROXY=xxx.xxx.x.xxx:9229
node index.js
- To debug an existing process:
export DEBUG_PROXY=xxx.xxx.x.xxx:9229
export DEBUG_PID=<pid of node process>
npx sandbox-debugger
- Find pid of first running Node.js process
ps ax |
grep 'no[d]e ' |
awk '{print $1}' |
head -n 1
- Allow remote access to me:
npx ngrok http 9229
Create a tunnel to our sandbox server process
Using ngrok you can tunnel to the locally running broker from for example aws lambda.
npx ngrok http 9229
Client
Example debug current process
require('sandbox-debugger')
debugger
console.log('all done')

DEBUG_PROXY=ip:port node index.js
Example debug an already running process
DEBUG_PROXY=ip:port DEBUG_PID=x npx sandbox-debugger

AWS Lambda
Environment variable DEBUG_PROXY needs to point to the ngrok address including the port part :80.
The easiest way to debug lambda is to edit the code in aws console.
- Copy the contents of
https://unpkg.com/sandbox-debugger@latest/dist/index.js to debug.js
require('./debug.js') instead of sandbox-debugger
or
Use a lambda layer containing the sandbox-debugger, you can publish your own for node 12 here and also node 10 here.
license
Apache License, Version 2.0