Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

sandbox-debugger

jameskyburz151Apache-2.00.2.44

sandbox debugger client for node

inspect, debug, sandbox, docker, lambda, travis, github-actions, remote-debugging, reverse-proxy, client, runkit, bitbucket-pipelines, gitlab-ci/cd, aws-codebuid, heroku

readme

sandbox-debugger

js-standard-style ci automerge Docker Image CI downloads Docker Pulls

Debug a Node.js process anywhere using chrome://inspect or node-inspect

node debug port 9229 sandbox debug client sandbox debug broker

Interactive debugging using inspect, debug the same way you do with a local process.

Supports a Node.js process running

  • <input checked="" disabled="" type="checkbox"> on a machine you can't ssh / don't have access to
  • <input checked="" disabled="" type="checkbox"> in a Docker Container with no exposed ports
  • <input checked="" disabled="" type="checkbox"> on Travis CI
  • <input checked="" disabled="" type="checkbox"> on Github Actions
  • <input checked="" disabled="" type="checkbox"> on Bitbucket Pipelines
  • <input checked="" disabled="" type="checkbox"> on GitLab CI/CD
  • <input checked="" disabled="" type="checkbox"> on AWS CodeBuild
  • <input checked="" disabled="" type="checkbox"> on AWS Lambda
  • <input checked="" disabled="" type="checkbox"> on Heroku
  • <input checked="" disabled="" type="checkbox"> anywhere that allows outbound internet traffic to port 80

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

// index.js
require('sandbox-debugger')
debugger
console.log('all done')

# DEBUG_PROXY is ip:port to sandbox broker
DEBUG_PROXY=ip:port node index.js

Example debug an already running process

# DEBUG_PROXY is ip:port to sandbox broker
# DEBUG_PID is pid of process to debug
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