Mòdul de comunitat impressionant

depurar

Estat de la compilació Estat de cobertura Fluix OpenCollective OpenCollective

Una petita utilitat de depuració de JavaScript basada en la tècnica de depuració del nucli de Node.js. Funciona en Node.js i navegadors web.

Instal·lació

1
$ npm install debug

Ús

debugexposa una funció; només cal que passeu aquesta funció amb el nom del vostre mòdul i us retornarà una versió decorada console.errorper passar instruccions de depuració. Això us permetrà canviar la sortida de depuració per a diferents parts del mòdul i del mòdul. com un tot.

Exemple app.js :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
var debug = require('debug')('http') , http = require('http') , name = 'My App'; // fake app debug('booting %o', name); http.createServer(function(req, res){ debug(req.method + ' ' + req.url); res.end('hello\n'); }).listen(3000, function(){ debug('listening'); }); // fake worker of some kind require('./worker');

Exemple worker.js :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
var a = require('debug')('worker:a') , b = require('debug')('worker:b'); function work() { a('doing lots of uninteresting work'); setTimeout(work, Math.random() * 1000); } work(); function workb() { b('doing some work'); setTimeout(workb, Math.random() * 2000); } workb();

A DEBUGcontinuació, s'utilitza la variable d'entorn per habilitar-les basades en noms delimitats per espais o comes.

Aquests són alguns exemples:

captura de pantalla 08-08-2017 a les 12 53 04 h captura de pantalla 08-08-2017 a les 12 53 a les 38 h captura de pantalla 08-08-2017 a les 12 53 a les 25 hores

Nota de Windows

Al Windows, la variable d'entorn s'estableix mitjançant l' setordre.

1
set DEBUG=*,-not_this

Tingueu en compte que PowerShell utilitza una sintaxi diferent per establir variables d'entorn.

1
$env:DEBUG = "*,-not_this"

A continuació, executeu el programa per depurar-lo com de costum.

Colors de l'espai de noms

Cada instància de depuració té un color que es genera en funció del nom de l'espai de noms. Això ajuda a analitzar visualment la sortida de depuració per identificar a quina instància de depuració pertany una línia de depuració.

Node.js

A Node.js, els colors s’activen quan stderr és un TTY. També heu d’ instal·lar el supports-colormòdul al costat de la depuració; en cas contrari, la depuració només farà servir un petit grapat de colors bàsics.

Navegador web

Els colors també estan habilitats als "Inspectors web" que entenen l' %copció de format: són inspectors web de WebKit, Firefox ( des de la versió 31 ) i el connector Firebug per a Firefox (qualsevol versió).

Dif. Mil·lisegons

Quan es desenvolupa activament una aplicació, pot ser útil veure quan es passa el temps entre una debug()trucada i la següent. Suposem, per exemple, que invoca debug()abans de sol·licitar un recurs i, després, el "+ NNNms" us mostrarà quant temps es va passar entre trucades.

Quan stdout no és un TTY, Date#toISOString()s’utilitza, cosa que el fa més útil per registrar la informació de depuració, tal com es mostra a continuació:

Convencions

Si utilitzeu això en una o més de les vostres biblioteques, hauríeu d' utilitzar el nom de la vostra biblioteca perquè els desenvolupadors puguin canviar la depuració com vulgueu sense endevinar noms. Si teniu més d'un depurador, els hauríeu de posar amb el vostre nom de utilitzeu ":" per separar les funcions. Per exemple, "bodyParser" de Connect seria "connect: bodyParser". Si afegiu un "*" al final del vostre nom, sempre estarà habilitat independentment de la configuració del DEBUG variable d'entorn. Podeu utilitzar-la tant per a la sortida normal com per a la depuració.

Comodins

El *caràcter es pot utilitzar com a comodí. Suposem, per exemple, que la vostra biblioteca té depuradors anomenats "connect: bodyParser", "connect: compress", "connect: session", en lloc de llistar els tres amb DEBUG=connect:bodyParser,connect:compress,connect:session, podeu fer-ho simplement DEBUG=connect:*o executar-lo tot el que fa servir aquest mòdul simplement utilitza DEBUG=*.

També podeu excloure depuradors específics prefixant-los amb un caràcter "-". Per exemple, DEBUG=*,-connect:*inclouria tots els depuradors excepte els que comencin per "connect:".

Variables del mediambient

Quan executeu Node.js, podeu establir algunes variables d'entorn que canviaran el comportament del registre de depuració:

Nom Propòsit
DEBUG Activa / desactiva els espais de noms de depuració específics.
DEBUG_HIDE_DATE Amaga la data de la sortida de depuració (que no és TTY).
DEBUG_COLORS Utilitzar o no colors a la sortida de depuració.
DEBUG_DEPTH Profunditat d'inspecció d'objectes.
DEBUG_SHOW_HIDDEN Mostra les propietats ocultes dels objectes inspeccionats.

Nota: Les variables d'entorn que comencen per DEBUG_acaben convertint-se en un objecte Options que s'utilitza amb %o/ %Oformatters. Consulteu la documentació de Node.js per util.inspect() obtenir la llista completa.

Formatadors

La depuració utilitza el format d’ estil printf . A continuació es mostren els formats admesos oficialment:

Formatador Representació
%O Imprimiu bastant un objecte en diverses línies.
%o Imprimiu bastant un objecte tot en una sola línia.
%s Corda.
%d Nombre (tant sencer com flotant).
%j JSON. Substituït per la cadena "[Circular]" si l'argument conté referències circulars.
%% Signe de percentatge únic ('%'). Això no consumeix cap argument.

Custom formatters

Podeu afegir formats personalitzats ampliant l' debug.formattersobjecte. Per exemple, si voleu afegir suport per representar un buffer com a hexadecimal %h, podeu fer alguna cosa com:

1 2 3 4 5 6 7 8 9
const createDebug = require('debug') createDebug.formatters.h = (v) => { return v.toString('hex') } // …elsewhere const debug = createDebug('foo') debug('this is hex: %h', new Buffer('hello world')) // foo this is hex: 68656c6c6f20776f726c6421 +0ms

Suport del navegador

Es pot construir un script compatible amb el navegador usant browserify , o simplement utilitzar el browserify-as-a-service acumulació , si vostè no desitja construir per si mateix.

De depuració permeten estat es conserva actualment per localStoragePenseu en la situació que es mostra a continuació, on tens. worker:aI worker:b, i el desig de depurar tant Activeu aquesta utilitzant. localStorage.debug:

1
localStorage.debug = 'worker:*'

I després actualitzeu la pàgina.

1 2 3 4 5 6 7 8 9 10
a = debug('worker:a'); b = debug('worker:b'); setInterval(function(){ a('doing some work'); }, 1000); setInterval(function(){ b('doing some work'); }, 1200);

Fluxos de sortida

Per defecte, debuges registrarà a stderr, però es pot configurar per espai de noms substituint el logmètode:

Exemple stdout.js :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
var debug = require('debug'); var error = debug('app:error'); // by default stderr is used error('goes to stderr!'); var log = debug('app:log'); // set this namespace to log via console.log log.log = console.log.bind(console); // don't forget to bind to console! log('goes to stdout'); error('still goes to stderr!'); // set all output to go via console.info // overrides all per-namespace log settings debug.log = console.info.bind(console); error('now goes to stdout via console.info'); log('still goes to stdout, but via console.info now');

Estableix dinàmicament

També podeu habilitar la depuració dinàmicament trucant al enable()mètode:

1 2 3 4 5 6 7 8 9 10
let debug = require('debug'); console.log(1, debug.enabled('test')); debug.enable('test'); console.log(2, debug.enabled('test')); debug.disable(); console.log(3, debug.enabled('test'));

imprimir:

1 2 3
1 false 2 true 3 false

Ús:
enable(namespaces)
namespacespot incloure modes separats per dos punts i comodins.

Tingueu en compte que la trucada enable()anul·la completament la variable DEBUG establerta prèviament:

1 2
$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' => false

Comprovar si hi ha habilitat un objectiu de depuració

Després de crear una instància de depuració, podeu determinar si està habilitada o no comprovant la enabledpropietat:

1 2 3 4 5
const debug = require('debug')('http'); if (debug.enabled) { // do stuff... }

També podeu canviar manualment aquesta propietat per obligar a habilitar o desactivar la instància de depuració.

Autors

  • TJ Holowaychuk
  • Nathan Rajlich
  • Andrew Rhyne

Patrocinadors

Ajudeu-nos amb una donació mensual i ajudeu-nos a continuar les nostres activitats. [ Feu-vos un patrocinador ]

Patrocinadors

Feu-vos patrocinador i obteniu el vostre logotip al nostre README a Github amb un enllaç al vostre lloc. [ Feu-vos patrocinador ]

Llicència

(La llicència MIT)

Copyright (c) 2014-2017 TJ Holowaychuk < tj@vision-media.ca >

Es concedeix, de manera gratuïta, permís a qualsevol persona que obtingui una còpia d’aquest programari i dels fitxers de documentació associats (el “programari”) per tractar el programari sense restriccions, inclosos, sense limitacions, els drets d’ús, còpia, modificació, combinació , publicar, distribuir, subllicenciar i / o vendre còpies del programari i permetre que les persones a les quals es proporciona el programari ho facin, amb les següents condicions:

L’avís de copyright anterior i aquest avís de permís s’inclouran a totes les còpies o parts importants del programari.

EL PROGRAMARI ES PROPORCIONA “SÓN”, SENSE GARANTIA DE NINGÚN TIPUS, EXPRESA O IMPLÍCITA, INCLOSA PERUT NO LIMITADA A LES GARANTIES DE COMERCIALITAT, IDONEITAT PER A UN PROPOSESIT PARTICULAR I NO INFRACCIÓ. DANYS O ALTRES RESPONSABILITATS, SIGUIN EN UNA ACCIÓ DE CONTRACTE, TORT O ALTRES, SORTIDES DE, FUENT O EN RELACIÓ AMB EL PROGRAMARI O L'ÚS O ALTRES TRACTAMENTS DEL PROGRAMARI.