Замечательный модуль сообщества

отлаживать

Статус сборки Статус покрытия Слабина OpenCollective OpenCollective

Крошечная утилита отладки JavaScript, созданная по образцу метода отладки ядра Node.js. Работает в Node.js и веб-браузерах.

Установка

1
$ npm install debug

использование

debugпредоставляет функцию; просто передайте этой функции имя вашего модуля, и она вернет декорированную версию, в которую console.errorвы можете передать операторы отладки. Это позволит вам переключать вывод отладки для разных частей вашего модуля, а также для модуля в целом.

Пример 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');

Пример 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();

DEBUGПеременная среды затем используется для того, чтобы они основаны на пространстве имен или разделенных запятыми.

Вот некоторые примеры:

снимок экрана 2017-08-08 в 12 53 16:00 снимок экрана 2017-08-08 в 12 53 38 пп снимок экрана 2017-08-08 в 12 53 25 пп

Примечание Windows

В Windows переменная среды устанавливается с помощью setкоманды.

1
set DEBUG=*,-not_this

Обратите внимание, что PowerShell использует другой синтаксис для установки переменных среды.

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

Затем запустите программу для отладки как обычно.

Цвета пространства имен

Каждый экземпляр отладки имеет цвет, сгенерированный для него на основе имени пространства имен.Это помогает при визуальном анализе выходных данных отладки, чтобы определить, к какому экземпляру отладки принадлежит строка отладки.

Node.js

В Node.js цвета включены, когда stderr является телетайпом. Вы также должны установить supports-colorмодуль вместе с отладкой, иначе отладка будет использовать только небольшую горстку основных цветов.

Веб-браузер

Цвета также включены в «Веб-инспекторах», которые понимают параметр %cформатирования: это веб-инспекторы WebKit, Firefox ( начиная с версии 31 ) и плагин Firebug для Firefox (любая версия).

Миллисекундная разница

При активной разработке приложения может быть полезно узнать, debug()сколько времени прошло между одним вызовом и следующим. Предположим, например, вы вызываете debug()перед запросом ресурса, а также после того, как "+ NNNms" покажет вам, сколько времени было потрачено. между звонками.

Когда stdout не является TTY, Date#toISOString()используется, что делает его более полезным для регистрации отладочной информации, как показано ниже:

Соглашения

Если вы используете это в одной или нескольких своих библиотеках, вы должны использовать имя своей библиотеки, чтобы разработчики могли переключать отладку по желанию, не угадывая имена. Если у вас более одного отладчика, вы должны добавить к ним имя вашей библиотеки и используйте «:» для разделения функций. Например, «bodyParser» из Connect будет тогда «connect: bodyParser». Если вы добавите «*» в конец своего имени, он всегда будет включен независимо от настройки DEBUG. Переменная окружения, которую затем можно использовать как для обычного вывода, так и для вывода отладки.

Подстановочные знаки

Этот *символ может использоваться как подстановочный знак. Предположим, например, в вашей библиотеке есть отладчики с именами «connect: bodyParser», «connect: compress», «connect: session», вместо перечисления всех трех с помощью DEBUG=connect:bodyParser,connect:compress,connect:session, вы можете просто выполнить DEBUG=connect:*или запустить все, что использует этот модуль, просто используйте DEBUG=*.

Вы также можете исключить определенные отладчики, поставив перед ними знак «-». Например, DEBUG=*,-connect:*будут включены все отладчики, кроме тех, которые начинаются с «connect:».

Переменные среды

При запуске через Node.js вы можете установить несколько переменных среды, которые изменят поведение журнала отладки:

Имя Цель
DEBUG Включает / отключает определенные пространства имен отладки.
DEBUG_HIDE_DATE Скрыть дату из вывода отладки (без TTY).
DEBUG_COLORS Следует ли использовать цвета в выводе отладки.
DEBUG_DEPTH Глубина осмотра объекта.
DEBUG_SHOW_HIDDEN Показывает скрытые свойства на проверяемых объектах.

Примечание: Переменные среды , начиная с DEBUG_конца до превращения в объект Options , который привыкает с %o/ %O. Форматтеров Смотрите документацию Node.js для util.inspect() для полного списка.

Форматировщики

Отладка использует форматирование в стиле printf . Ниже перечислены официально поддерживаемые программы форматирования:

Форматировщик Представление
%O Распечатайте объект в несколько строк.
%o Распечатайте все объекты в одной строке.
%s Нить.
%d Число (как целое, так и с плавающей запятой).
%j JSON. Заменяется на строку "[Circular]", если аргумент содержит циклические ссылки.
%% Одиночный знак процента ("%"). Аргумент не используется.

Custom formatters

Вы можете добавить собственные средства форматирования, расширив debug.formattersобъект. Например, если вы хотите добавить поддержку для рендеринга буфера как шестнадцатеричного с помощью %h, вы можете сделать что-то вроде:

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

Поддержка браузера

Вы можете создать браузерную готовый скрипт , используя browserify , или просто использовать browserify-как-услуга сборки , если вы не хотите , чтобы построить его самостоятельно.

Состояние включения отладки в настоящее время сохраняется localStorage. Рассмотрим ситуацию, показанную ниже, где у вас есть worker:aи worker:b, и вы хотите отладить оба. Вы можете включить это, используя localStorage.debug:

1
localStorage.debug = 'worker:*'

А затем обновите страницу.

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);

Выходные потоки

По умолчанию debugбудет регистрироваться в stderr, однако это можно настроить для каждого пространства имен, переопределив logметод:

Пример 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');

Установить динамически

Вы также можете включить отладку динамически, вызвав enable()метод:

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'));

Распечатать:

1 2 3
1 false 2 true 3 false

Использование:
enable(namespaces)
namespacesможет включать режимы, разделенные двоеточием и символами подстановки.

Обратите внимание, что вызов enable()полностью отменяет ранее установленную переменную DEBUG:

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

Проверка, включена ли цель отладки

После создания экземпляра отладки вы можете определить, включен ли он, проверив enabledсвойство:

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

Вы также можете вручную переключить это свойство, чтобы принудительно включить или отключить экземпляр отладки.

Авторы

  • Т.Дж. Головайчук
  • Натан Райлих
  • Эндрю Райн

Спонсоры

Поддержите нас ежемесячным пожертвованием и помогите нам продолжить нашу деятельность. [ Станьте спонсором ]

Спонсоры

Станьте спонсором и разместите свой логотип в README на Github со ссылкой на свой сайт. [ Стать спонсором ]

Лицензия

(Лицензия MIT)

Авторские права (c) 2014-2017 TJ Holowaychuk < tj@vision-media.ca >

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных файлов документации («Программное обеспечение»), на использование Программного обеспечения без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. , публиковать, распространять, сублицензировать и / или продавать копии Программного обеспечения и разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

Вышеупомянутое уведомление об авторских правах и это уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ​​ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И НЕЗАЩИТЫ ДЕРЖАТЕЛЯ. УБЫТКИ ИЛИ ДРУГАЯ ОТВЕТСТВЕННОСТЬ, В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ ДОГОВОРА, ПРАВИЛА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКНУЮЩИМ В РЕЗУЛЬТАТЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ИЛИ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЛАМИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.