Dnes jsem na Twitteru viděl rychlý rozhovor mezi @ThisIsMisEm a @davidmarkclem. Jejich zprávy odhalily zajímavý fakt o ladění Node.js.
Miliony balíčků závisí na velmi oblíbeném ladicím balíčku. Poskytnuté debug
umožňuje vývojářům Node.js řídit zasílání zpráv protokolu. Na rozdíl od staré dobré console
, zprávy používající debug
jsou ve výchozím nastavení skryté.
debug
zprávy protokolu jsou vázány na název modulu a zobrazí se pouze při DEBUG
Proměnná prostředí uvádí název konkrétního modulu.
// only logs message when `DEBUG=http` is set
const debug = require('debug')('http');
debug('booting %o', name);
util.debuglog
– nativní debug
alternativní
Ukazuje se, že Node.js má podobnou funkcionalitu zabudovanou. Metoda util
poskytuje téměř identické funkce.
Podívejme se na nativní příklad:
// index.js
const util = require('util');
const debuglog = util.debuglog('app');
debuglog('hello from my debugger [%d]', 123);
Když tento kód spustíte ve svém terminálu, neuvidíte žádné zprávy protokolu. Když však definujete, že máte test app
protokolovat zprávy a definovat proměnnou prostředí NODE_DEBUG=app
, zobrazí se zprávy protokolu:
$ NODE_DEBUG=app node index.js
APP 86155: hello from my debugger [123]
util
dokonce podporuje zástupné znaky (*
) v případě, že chcete povolit zprávy protokolu pro různé moduly najednou.
// index.js
const util = require('util');
const logGeneral = util.debuglog('app-general');
const logTimer = util.debuglog('app-timer');
const delay = 500;
logGeneral('Kicking off the app');
setTimeout(() => {
logTimer('timer fired after %d', delay);
}, delay);
Spuštění skriptu s app-*
Proměnná prostředí vede k následujícímu:
$ NODE_DEBUG=app-* node index.js
APP-GENERAL 86188: Kicking off the app
APP-TIMER 86188: timer fired after 500
NODE_DEBUG
Proměnnou prostředí lze také použít k získání ladicích zpráv z interních souborů Node.js. Možná jste na něj občas narazili v dokumentaci Node.js.
Je perfektní vědět o util
, ale jak David zdůrazňuje, nativní varianta nepokrývá všechny debug
funkčnost. Především debug
vybarví vaše log zprávy pěkně a chybějící barvy mohou být pro pár lidí průlom.
Pro mě util
je dobrou alternativou pro debug
balíček v menších projektech, ve kterých chci uložit závislost. Pokud se chcete dozvědět více o Node.js a jeho util
modulu, přečtěte si dokumentaci k Node.js util
nebo se podívejte do sekce Node.js na mém blogu.