Поиск по этому блогу

понедельник, 25 июля 2016 г.

Отладка-скриптов-в-nodejs

Здесь заметки к двум видео - Supervisor и "Отладка...". Nodejs считывает файл модуля один раз, поэтому при отладке надо чистить кэш. Делать это лучше с помощью модуля Supervisor. А для отладки можно использовать внутренний дебаггер, GUI Crome, или настроить IDE. Пробую варианты дебаггера по одноименному видео от И. Кантора.

Debugger Node.js v6.3.1 Documentation
V8 Welcome to the developer documentation forV8. V8 is Google's open source, high performance JavaScript engine. It is written in C++ and is used in Google Chrome, Google's open source browser.
V8 github is Google's open source high-performance JavaScript engine, written in C++ and used in Google Chrome, the open source browser from Google. It implements ECMAScript as specified in ECMA-262, and runs on Windows XP or later, Mac OS X 10.5+, and Linux systems that use IA-32, ARM or MIPS processors. V8 can run standalone, or can be embedded into any C++ application.
Debugging Protocol


Код для скринкаста по Node.JS

Ставим глобально и далее используем вместо "node" "supervisor"

In [ ]:
npm i -g supervisor

Следит за всеми файлами в текущей папке !!! А не только за ... настройки посмотреть подробнее. Так что надо бы исключать node_modules

Подводные камни (2:50) - Новые файлы не определяет, если их не реквайрят (перезапустить), bcrk.xbnm node_modules

А дебаггер уже стоит, но нужно выполнить два условия

In [ ]:
// в любом месте кода script.js
debugger;
In [ ]:
//Запуск скрипта 
node debug script.js

Node inspector подключает GUI Chrome

In [ ]:
npm i -g node-inspector

Эта штука использует движок v8 со всеми опциями GUI отладчика.

Приемы работы

In [ ]:
// в любом месте кода script.js
debagger;

теперь --debug

In [ ]:
node --debug script.js
node-inspector

Чтобы сразу же войти в режим отладки (без debagger;), удобно при отлове ошибок.

In [ ]:
node --debug-brk=5858 script.js

Логирование, модули debug и winston

In [ ]:
npm i debug
In [ ]:
var debug = require('debug')('server')

Для другого модуля - другую метку

In [ ]:
var debug = require('debug')('server:request')

В код можно добавать строки вида

In [ ]:
debug('Unit request', req.method, req.url);

Для вывода сообщений в консоль нужно присвоить переменной окружения DEBUG имя файла

In [ ]:
DEBUG=server, server:request

А потом запустить файл

In [ ]:
node server.js

Когда надо бы посмотреть, что делается в gulp - файлах

Встает вопрос о том, как запустить дебаггер

In [ ]:
F:\stradorusite\gulp>node  --debug .\node_modules\gulp\bin\gulp.js styles
Debugger listening on port 5858
 [14:52:00] Using gulpfile F:\stradorusite\gulp\gulpfile.js
[14:52:00] Starting 'styles'...
{ src: 'frontend/styles/main.styl', taskName: 'styles' }
[14:52:04] Finished 'styles' after 4.19 s


Посты чуть ниже также могут вас заинтересовать

Комментариев нет: