[OBSOLETE] runs Node.js programs through Chromium DevTools

Overview

devtool

experimental

⚠️

Update: This tool is mostly obsolete as much of the philosophy has been brought into Node/DevTool core, see here for details.

If you wish to take over maintenance of this project, please ping me on twitter: @mattdesl.


Runs Node.js programs inside Chrome DevTools (using Electron).

# runs a Node.js app in DevTools
devtool src/app.js

This allows you to profile, debug and develop typical Node.js programs with some of the features of Chrome DevTools. See my blog post Debugging Node.js With Chrome DevTools for more details.

The recording below shows setting breakpoints within an HTTP server.

movie

Note: This tool is still in early stages. So far it has only been tested on a couple of OSX machines. :)

Install

Install globally with npm.

npm install devtool -g

Usage

Run the command to open a new DevTools window.

Usage:
  devtool [entry] [opts]

Options:
  --watch, -w             enable file watching (for development)
  --quit, -q              quit application on fatal errors
  --console, -c           redirect console logs to terminal
  --index, -i             specify a different index.html file
  --poll, -p              enable polling when --watch is given
  --show, -s              show the browser window (default false)
  --headless, -h          do not open the DevTools window
  --timeout, -t           if specified, will close after X seconds
  --break                 insert a breakpoint in entry point
  --config                a path to .devtoolrc config file
  --verbose               verbose Chromium logging
  --version, -v           log versions of underlying tools
  --require, -r           require path(s) before running entry
  --browser-field, --bf   resolve using "browser" field
  --no-source-maps,
                --no-sm   disable source map generation
  --no-node-timers,
                --no-nt   use browser timers
  --no-browser-globals,   
                --no-bg   removes window,document,navigator from required files

Examples:

# watch/dev a JS file, with a custom index.html
devtool src/index.js --index index.html --watch

# redirect console and pipe results to a file
devtool main.js -q -c > foo.txt

# open a REPL window
devtool

# pipe content into process.stdin
devtool writer.js < README.md

# pass clean arg list to app.js
devtool app.js --watch -- entry

# register with babel before requiring our app
devtool -r babel-register app.js

You can specify --watch multiple times to watch different files/globs. If a custom --index is passed, it will also be watched for changes.

If -- is given, anything after it will be used as the arguments for the app's process.argv. This way you can avoid polluting your program arguments with those specific to devtool.

The --browser-field or --bf makes the require() statements respect the package.json "browser" field.

The --no-browser-globals or --no-bg flag makes required modules behave a little more like Node, in that window, navigator, document and some other browser globals will be undefined in required files. Note: the console and REPL may still show some of these globals.

Advanced Configuration

You can also specify advanced Electron/Node options in a rc configuration file, such as DevTools themes and V8 flags. See rc configuration for more details.

Further Documentation

See my blog post Debugging Node.js With Chrome DevTools for more details.

Use Cases

Debugging / Profiling

For example, we can use this to profile and debug browserify, a node program that would not typically run inside Chrome DevTools. Here we use console.profile(), a feature of Chrome.

// build.js
var browserify = require('browserify');

// Start DevTools profiling...
console.profile('build');

// Bundle some browser application
browserify('client.js').bundle(function (err, src) {
  if (err) throw err;
  
  // Finish DevTools profiling...
  console.profileEnd('build');
});

Now we can run devtool on our file:

devtool build.js

Some screenshots of the profiling and debugging experience:

profile

debug

Note: Performance may vary between Node and Electron, so always take the results with a grain of salt!

You can also set an initial breakpoint with the --break flag. This will insert a debugger statement (hidden behind source maps) at the start of your entry file. This way, you can add breakpoints without having to reload the program or manually add them to your source code.

# run app but break on start
devtool src/index.js --break

REPL

We can also use the DevTools Console as a basic Node REPL with some nice additional features. The require statements will be relative to your current working directory. You can run the command without any entry file, like this:

devtool

console

When you don't specify an entry file, you can pipe JavaScript in to execute it in the browser. For example:

browserify client.js | devtool -c

Browser APIs

You can also mix Node modules with browser APIs, such as Canvas and WebGL. See example/streetview.js and the respective script in package.json, which grabs a StreetView panorama with some Google Client APIs and writes the PNG image to process.stdout.

For this, you may want to use the --bf or --browser-field flag so that modules like nets will use Web APIs where possible.

Example:

devtool street.js --index street.html --quit --bf > street.png

Result:

street

Note: For the output to drain correctly, we need to close the window after the buffer has been written.

process.stdout.write(buffer, function () {
  window.close();
});

See extract-streetview for a practical implementation of this idea built on devtool.

Grunt/Gulp/Mocha

To debug Grunt/Gulp/Mocha and other commands, you will need to pass the JavaScript file that runs them. You should also include -- to avoid any argument conflicts.

# same as "gulp watch"
devtool node_modules/gulp/bin/gulp.js -c -- watch

# same as "grunt"
devtool node_modules/grunt-cli/bin/grunt -c --

# run a mocha test
devtool node_modules/mocha/bin/_mocha -qc -- ./tests/my-spec.js 

Other Examples

See the example/ folder for more ideas, and the package.json scripts which run them.

Also see devtool-examples for more ideas.

Features

This is built on Electron, so it includes the Console, Profile, Debugger, etc.

It also includes some additional features on top of Electron:

  • Improved error handling (more detailed syntax errors in console)
  • Improved source map support for required files
  • Makes various Node features behave as expected, like require.main, process.argv, process.stdin and timers
  • Console redirection back to terminal (optional)
  • File watching for development and quit-on-error flags for unit testing (e.g. continuous integration)
  • Handles process.exit and error codes
  • Supports "browser" field resolution (optional)
  • Can hide browser globals (like window and navigator) for better compatibility with Node.js modules (optional)
  • Supports config files for V8 flags, color themes, and other options

Gotchas

Since this is running in Electron and Chromium, instead of Node, you might run into some oddities and gotchas.

  • window and other browser APIs are present; this may affect modules using these globals to detect Browser/Node environments
    • The --no-browser-globals may help mitigate these issues
  • You must call window.close() to stop the process; apps will not quit on their own
  • If a native module does not work, you may need to rebuild it for the right version of Electron
  • If you want to close or exit after writing to stderr/stdout, you should do so after a callback: outStream.write(buf, callback)
  • setTimeout, setInterval and related functions are shimmed for better compatibility with Node.js timers
  • process.stdin does not work in Windows shells, see this Electron issue

Roadmap / Contributing

This project is experimental and has not been tested on a wide range of applications or Node/OS environments. If you want to help, please open an issue or submit a PR. Some outstanding areas to explore:

  • Improving syntax error handling, e.g. adding it to Sources panel
  • Exposing an API for programmatic usage
  • Exploring native addons
  • Testing against a wide range of Node.js applications and modules

You can git clone and npm install this repo to start working from source. Type npm run to list all available commands.

See Also / Comparisons

hihat

If you like this, you might also like hihat. It is very similar, but more focused on running and testing browser applications. Hihat uses browserify to bundle everything into a single source file, and uses watchify for incremental file changes.

In some ways, devtool is a spiritual successor to hihat. The architecture is cleaner and better suited for large Node/Electron applications.

iron-node

Another Electron-based debugger is iron-node. iron-node includes better support for native addons and a complex graphical interface that shows your package.json and README.md.

Whereas devtool is more focused on the command-line, Unix-style piping/redirection, and Electron/Browser APIs for interesting use-cases (e.g. Google StreetView).

devtool shims various features to behave more like Node.js (like require.main and process.exit) and overrides the internal require mechanism for source maps, improved error handling and "browser" field resolution.

node-inspector

You may also like node-inspector, which uses remote debugging instead of building on top of Electron.

This means your code will run in a true Node environment, without any window or other Browser/Electron APIs that may pollute scope and cause problems with certain modules. It has stronger support for large Node.js applications (i.e. native addons) and more control over the DevTools instance (i.e. can inject breakpoints and support Network requests).

However, since it re-implements much of the debugging experience, it may feel clunky and fragile compared to developing inside the latest Chrome DevTools (e.g. console.profile() does not exist).

Whereas devtool aims to make the experience feel more familiar to those coming from Chrome DevTools, and also promotes other features like Browser/Electron APIs.

License

MIT, see LICENSE.md for details.

Comments
  • Windows Error: Implement me. Unknown stdin file type!

    Windows Error: Implement me. Unknown stdin file type!

    How to reproduce:

    type npm install devtool -g then type devtool inside the console there will be two errors, one at line 127 and the other at line 128 at C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resources\atom.asar\renderer\lib\init.js

    Error: Implement me. Unknown stdin file type!

    C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:127 Error: Implement me. Unknown stdin file type!(…)(anonymous function) @ C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:127Module._compile @ module.js:425Module._extensions..js @ module.js:432Module.load @ module.js:356Module._load @ module.js:313Module.runMain @ module.js:457startup @ node.js:151(anonymous function) @ node.js:1007
    C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:128 Error: Implement me. Unknown stdin file type!
        at process.stdin (node.js:747)
        at hookProcess (C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:117)
        at C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:29
        at Object.<anonymous> (C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:129)
        at Module._compile (module.js:425)
        at Object.Module._extensions..js (module.js:432)
        at Module.load (module.js:356)
        at Function.Module._load (module.js:313)
        at Module.require (module.js:366)
        at require (module.js:385)(anonymous function) @ C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:128Module._compile @ module.js:425Module._extensions..js @ module.js:432Module.load @ module.js:356Module._load @ module.js:313Module.runMain @ module.js:457startup @ node.js:151(anonymous function) @ node.js:1007
    
    opened by rafaelcastrocouto 13
  • Improving --no-browser-globals

    Improving --no-browser-globals

    Since #23 I have added --no-browser-globals which was a first attempt at solving some issues with node modules that rely on window / document / etc (i.e. doing some node-type code if window is undefined).

    This causes some new issues in some cases: https://twitter.com/yaypie/status/692127048773550080

    The problem is basically here: https://github.com/zloirock/core-js/blob/270fabccd38e0210caf1a4ffc44ca328880fba69/modules/_global.js

    console.log(Function('return this')())
    

    Where this in that context evaluates to window...

    bug 
    opened by mattdesl 9
  • Updated electron version

    Updated electron version

    Updated electron package version to the latest.

    Without this Babel 6 via require hook would not work if using util.inherits, investigation seemed to point towards "use strict" and Object.prototype being read only, seems babel or electron was forcing strictness in that scenario on the older version.

    Error stack:

    /MY_PROJECT_DIR/node_modules/babel-core/lib/transformation/file/index.js:548
          throw err;
          ^
    
    TypeError: /MY_PROJECT_DIR/api/hooks/hive/queue.js: Cannot set property 'Symbol(should not be considered a local binding)' of undefined
        at Object.push (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/node_modules/babel-helper-define-map/lib/index.js:96:37)
        at [object Object].pushToMap (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js:191:25)
        at [object Object].pushMethod (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js:531:10)
        at [object Object].pushBody (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js:312:16)
        at [object Object].buildBody (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js:244:10)
        at [object Object].run (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js:151:10)
        at PluginPass.ClassExpression (/MY_PROJECT_DIR/node_modules/babel-plugin-transform-es2015-classes/lib/index.js:63:60)
        at newFn (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/visitors.js:293:19)
        at NodePath._call (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/path/context.js:74:18)
        at NodePath.call (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/path/context.js:46:17)
        at NodePath.visit (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/path/context.js:104:12)
        at TraversalContext.visitQueue (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/context.js:153:16)
        at TraversalContext.visitSingle (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/context.js:113:19)
        at TraversalContext.visit (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/context.js:197:19)
        at Function.traverse.node (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/index.js:139:17)
        at NodePath.visit (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/path/context.js:114:22)
        at TraversalContext.visitQueue (/MY_PROJECT_DIR/node_modules/babel-traverse/lib/context.js:153:16)
    

    Tried disabling various babel plugins to no effect, in the end the Electron update did the trick.

    Preset babel-preset-es2015-node5 now works perfectly. As does just es2015.

    opened by Salakar 9
  • Cannot read property 'commandLine' of undefined

    Cannot read property 'commandLine' of undefined

    https://github.com/Jam3/devtool/blob/dab319eef616f995d3c6d497c4afee2ae891cf54/server.js#L20

    ❯ node -v 
    v6.2.0
    
    ❯ npm i -g devtool
    /usr/local/bin/devtool -> /usr/local/lib/node_modules/devtool/bin/index.js
    /usr/local/lib
    └── [email protected] 
    
    ❯ devtool
    App threw an error when running [TypeError: Cannot read property 'commandLine' of undefined]
    /usr/local/lib/node_modules/devtool/node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/default_app.asar/main.js:267
          throw e
          ^
    
    TypeError: Cannot read property 'commandLine' of undefined
        at Object.<anonymous> (/usr/local/lib/node_modules/devtool/server.js:20:4)
        at Module._compile (module.js:413:34)
        at Object.Module._extensions..js (module.js:422:10)
        at Module.load (module.js:357:32)
        at Function.Module._load (module.js:314:12)
        at loadApplicationPackage (/usr/local/lib/node_modules/devtool/node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/default_app.asar/main.js:253:23)
        at Object.<anonymous> (/usr/local/lib/node_modules/devtool/node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/default_app.asar/main.js:293:5)
        at Module._compile (module.js:413:34)
        at Object.Module._extensions..js (module.js:422:10)
        at Module.load (module.js:357:32)
    
    opened by zeke 8
  • Run Mocha test

    Run Mocha test

    I'm trying to use devtool with mocha.js but i get this error:

    module.js:340
        throw err;
        ^
    
    Error: Cannot find module '/usr/local/Cellar/nvm/0.26.1/v0.10.39/lib/node_modules/devtool/node_modules/electron-prebuilt/dist/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Resources/atom.asar/browser/lib/init.js'
        at Function.Module._resolveFilename (module.js:338:15)
        at Function.Module._load (module.js:289:25)
        at Function.Module.runMain (module.js:457:10)
        at startup (node.js:151:18)
        at node.js:1007:3
    

    I'm using the 1.7.6 version and trying:

    $ devtool /usr/local/opt/nvm/v0.10.39/bin/mocha `$ devtool /usr/local/opt/nvm/v0.10.39/bin/mocha --opts test/mocha.opts 'test/**/*.spec.js'``

    Both times i get the same error. I'm doing something wrong? thanks!

    help wanted 
    opened by zzarcon 8
  • devtool can not support:  run as debug

    devtool can not support: run as debug

    I have some codes like below:

    //filename: sum.js
    function sum(a, b) {
    var result = a + b;  // line 3
    return result;
    }
    sum(1, 2);
    

    I want stop the code at line 3. then I run devtool sum.js, it run done without any control.

    most debug tools can add breakpoints to sum.js first, then I can select this file run as debug mode, so in this way I can debug the code easy.

    question 
    opened by rockcoder23 8
  • window object definition

    window object definition

    In devtool, window is defined as the normal window object as in a browser. This isn't really an issue, per se, but it is something that needs to be addressed before using the tool with certain isomorphic modules that are intended to run on either the client or server.

    It's not surprising behavior given that the node app is being loaded into an electron-wrapped web page, but it does cause a lot of issues when using code that decides how to run based on the presence of a window object. I've gotten around the issue as follows:

    // Change this...
    if (typeof window === 'undefined') {
        // Do server-type stuff
    } else if (typeof window === 'object') {
        // Do client-type stuff
    }
    
    // To this...
    if (typeof window === 'undefined' || typeof process === 'object') {
        // Do server-type stuff, since process is a node-specific variable
    } else if (typeof window === 'object' && typeof process === 'undefined') {
        // Do client-type stuff
    }
    

    One can also check typeof require === 'function' to make sure the code is running "in node" vs. "in the browser". Once these types of issues are resolved, even complex web apps can be run and debugged!

    Fantastic work.

    enhancement question 
    opened by cannoneyed 7
  • Don't touch process.stdin

    Don't touch process.stdin

    Commenting the lines that refer to process.stdin prevents the windows error messages on https://github.com/Jam3/devtool/issues/42

    Maybe we should add if (/^win/.test(process.platform)) on those lines or find a real fix for the stdin problem.

    opened by rafaelcastrocouto 6
  • ioredis support

    ioredis support

    Using ioredis inside an app: devtool web.js throws this error, while node web.js doesn't.

    https://github.com/luin/ioredis/blob/48d9701ba9e245a8a650c96f59762d1344e417ef/lib/redis/parser.js#L18

    TypeError: this.Parser is not a function
        at Redis.exports.initParser (/some-project/node_modules/ioredis/lib/redis/parser.js:18:22)
        at Socket.<anonymous> (/some-project/node_modules/ioredis/lib/redis/event_handler.js:30:10)
        at Socket.g (events.js:260:16)
        at emitNone (events.js:72:20)
        at Socket.emit (events.js:166:7)
    
    opened by MadLittleMods 5
  • node commandline options

    node commandline options

    Hello,

    i have some nodejs apps requiring to be started with special node options (mostly for enabling es6 features of nodejs).

    An example :

    node --harmony --harmony-destructuring --harmony-modules --harmony-default-parameters myapp.js
    

    How can it be done in devtool ?

    Kind regards,

    Lars

    enhancement 
    opened by lgersman 4
  • add support async/await

    add support async/await

    hi,

    currently devtool doesn't support for async/await already available in latest chromium and nodejs. i'm creating this ticket to track the status of this feature. :rocket:

    opened by phra 3
  • Upgraded electron to get the latest performance timeline.

    Upgraded electron to get the latest performance timeline.

    The format of the JSON export from chrome's performance timeline has changed in recent versions. I found that the version devtool is using is incompatible so had to upgrade the electron version.

    Upgraded electron to get the latest performance timeline. Changed test v8 flags since existing flag is now enabled by default. Added new Buffer argument to custom module loader function signature. Differentiated browser global test message.

    opened by nathanjd 0
  • Support more flags in devtoolrc

    Support more flags in devtoolrc

    Hey,

    Context

    I'm trying to debug my tests using ava and devtool. For my project, I've managed to do it like so: NODE_ENV=test devtool node_modules/ava/profile.js test/dfs-pre.js -r babel-register

    Note that I need to put devtool flags at the end as profile.js reads arguments at specific positions. That said I use this command line in a npm script to which I pass the file I want to debug.

    package.json

    {
      "scripts": {
        "debugfile": "NODE_ENV=test devtool node_modules/ava/profile.js -r babel-register"
      }
    }
    

    cli

    $ yarn debugfile test/dfs-pre.js
    

    result

    NODE_ENV=test devtool node_modules/ava/profile.js -r babel-register test/dfs-pre.js
    

    Problem

    The problem is that I need my test/foo.js to be the 3rd argument. The flags of devtool conflict with this.

    Proposal

    In order to be able to start devtool without any flags, it would be super nice to be able to make them available in .devtoolrc. The most urgent for me would be require.

    Thanks!

    opened by ngryman 0
  • Can you add docs on how to use this with jest?

    Can you add docs on how to use this with jest?

    I've tried this:

    ./node_modules/devtool/bin/index.js ./node_modules/jest/bin/jest.js -i
    

    Which does launch devtools and runs the tests but I put a debugger; line in the code and it didn't stop. I also don't see a way to keep the electron app open so as I save files I can set breakpoints inside the devtools and re-run them.

    opened by sontek 1
Owner
Jam3
We create modern experiences for tomorrow’s brands
Jam3
ndb is an improved debugging experience for Node.js, enabled by Chrome DevTools

ndb ndb is an improved debugging experience for Node.js, enabled by Chrome DevTools Installation Compatibility: ndb requires Node >=8.0.0. It works be

null 10.8k Dec 28, 2022
thetool is a CLI tool to capture different cpu, memory and other profiles for your node app in Chrome DevTools friendly format

thetool thetool is a CLI tool to capture different cpu, memory and other profiles for your node app in Chrome DevTools friendly format. Quick start np

null 200 Oct 28, 2022
A simple Chromium browser extension to every so often Rickroll yourself. Every link you click has a 1% chance of being a Rickroll.

Rick Rollette A simple Chromium browser extension to every so often Rickroll yourself. Every link you click has a 1% chance of being a Rickroll. How t

Davi Augusto Moreira da Silva 43 Jun 9, 2022
📡 Encrypt and authenticate DevTools to use it securely remotely. Add HTTPS, and authentication to --remote-debugging-port to debug, inspect and automate from anywhere and collaborate securely on bugs.

?? Encrypt and authenticate DevTools to use it securely remotely. Add HTTPS, and authentication to --remote-debugging-port to debug, inspect and automate from anywhere and collaborate securely on bugs.

Cris 9 May 5, 2022
🎸 A rsocket web devtools

rsocketMan ?? A devtool for rsocket protocol ?? Easy to help you to test your rsocket servers ?? Development Environment ?? Installation ?? In rsocket

Frozen FIsh 5 Jul 27, 2022
🚀 zx - Bring your Discord's devtools back to life

discord-enable-devtools Bring your Discord's devtools back to life TL;DR Discord devtools was disabled, see more. You can enable it again by adding th

Bruno Silva 5 Mar 10, 2022
A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers

debug A tiny JavaScript debugging utility modelled after Node.js core's debugging technique. Works in Node.js and web browsers. Installation $ npm ins

Sloth 10.5k Dec 30, 2022
Node is running but you don't know why? why-is-node-running is here to help you.

why-is-node-running Node is running but you don't know why? why-is-node-running is here to help you. Installation Node 8 and above: npm i why-is-node-

Mathias Buus 1.5k Dec 30, 2022
An lldb plugin for Node.js and V8, which enables inspection of JavaScript states for insights into Node.js processes and their core dumps.

Node.js v10.x+ C++ plugin for the LLDB debugger. The llnode plugin adds the ability to inspect JavaScript stack frames, objects, source code and more

Node.js 1k Dec 14, 2022
Node.js debugger based on Blink Developer Tools

Node Inspector Overview Node Inspector is a debugger interface for Node.js applications that uses the Blink Developer Tools (formerly WebKit Web Inspe

null 12.6k Dec 29, 2022
Debug Node.js code with Chrome Developer Tools.

Debug Node.js code with Chrome Developer Tools on Linux, Windows and OS X. This software aims to make things easier ?? . With ironNode you have the fu

Stephan Ahlf 2.3k Dec 30, 2022
🐛 Memory leak testing for node.

Leakage - Memory Leak Testing for Node Write leakage tests using Mocha or another test runner of your choice. Does not only support spotting and fixin

Andy Wermke 1.6k Dec 28, 2022
Long stack traces for node.js inspired by https://github.com/tlrobinson/long-stack-traces

longjohn Long stack traces for node.js with configurable call trace length Inspiration I wrote this while trying to add long-stack-traces to my server

Matt Insler 815 Dec 23, 2022
API Observability. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices.

swagger-stats | API Observability https://swaggerstats.io | Guide Trace API calls and Monitor API performance, health and usage statistics in Node.js

slana.tech 773 Jan 4, 2023
A Node.js tracing and instrumentation utility

njsTrace - Instrumentation and Tracing njstrace lets you easily instrument and trace you code, see all function calls, arguments, return values, as we

Yuval 354 Dec 29, 2022
Locus is a debugging module for node.js

ʆ Locus Locus is a debugging module which allows you to execute commands at runtime via a REPL. Installing npm install locus --save-dev Using require(

Ali Davut 300 Nov 13, 2022
He is like Batman, but for Node.js stack traces

Stackman Give Stackman an error and he will give an array of stack frames with extremely detailed information for each frame in the stack trace. With

Thomas Watson 242 Jan 1, 2023
Streamline Your Node.js Debugging Workflow with Chromium (Chrome, Edge, More) DevTools.

NiM (Node.js --inspector Manager) Streamlines your development process Google Chrome Web Store (works with any Chromium browsers: Google's Chrome, Mic

Will 188 Dec 28, 2022
ndb is an improved debugging experience for Node.js, enabled by Chrome DevTools

ndb ndb is an improved debugging experience for Node.js, enabled by Chrome DevTools Installation Compatibility: ndb requires Node >=8.0.0. It works be

null 10.8k Dec 28, 2022
thetool is a CLI tool to capture different cpu, memory and other profiles for your node app in Chrome DevTools friendly format

thetool thetool is a CLI tool to capture different cpu, memory and other profiles for your node app in Chrome DevTools friendly format. Quick start np

null 200 Oct 28, 2022