Отладка узловых приложений с помощью ndb

Node.js Chrome V8 NPM

Оригинальная ссылка:Debugging Node.js Application Using ndb

Лаборатория Google Chrome выпустила новый инструмент отладки узла, чтобы улучшить опыт разработчиков. В этой статье будет представлено всестороннее введение в инструмент узла ndb.

Те, кто знаком с узлом, могут знать, что узел всегда поддерживал безголовый инструмент отладки:

node 原生无头调试器

Он использует устаревший протокол, называемый протоколом отладчика V8, и не считается полнофункциональным отладчиком, а лишь некоторыми простыми проверками.

При этом в прошлом перед глазами разработчика появился новый инструмент отладки на основе протокола отладчика V8 и Blink, который позволяет нам отлаживать наше приложение узла на любом браузере ядра Webkit DevTools, да, это узел-инспектор , а его внешний вид значительно повышает эффективность отладки узловых приложений.

В версии V6.3.0 узла V8 Inspector был добавлен в качестве экспериментальной функции, которая обеспечивает очень мощный протокол отладки, а также интегрирует DevTools Chrome и поддерживает множество новых функций, таких как Blackbox, профилирование, рабочие области и исходные карты, чтобы назвать немного. Кроме того, он не зависит от устаревшего протокола отладчика V8, а напрямую основан на протоколе отладки Chrome, поэтому он может работать непосредственно в клиенте отладки, таком как браузер ядра Chromium, VCode, WebStorm и т. д. Запустить его тоже очень просто, достаточно ввести командуnode --inspect scrip.jsВот и все.

В версии 7.20 одновременно с открытым исходным кодом был открыт новый инструмент отладки узлов под названием ndb.

Приятно иметь новые инструменты отладки узлов, но какие новые функции есть у этого нового ndb?

фон, на котором появляется ndb

Сначала прикрепите официальное определение ndb:

ndb — это улучшенный способ отладки для Node.js, поддерживаемый Chrome DevTools. (ndb — это обновление для отладки узла, Chrome DevTools изначально поддерживает ndb)

Из приведенного выше определения мы можем найти, что:

  1. ndb может улучшить процесс отладки
  2. Chrome DevTools изначально поддерживает ndb, что означает, что он использует протокол отладки Chrome, аналогичный V8 Inspector.
  3. ndb поддерживается Google Chrome Labs

Так что вы можете подумать, что ndb просто предоставляет обновленную версию V8 Inspector, но это не так.

Мы можем обнаружить, что есть два предварительных условия для использования V8 Inspector и Chrome DevTools: во-первых, версия узла должна быть выше 6.3.0, а во-вторых, вы должны использовать браузер с ядром Chrome или Chromium. Что, если мы не выполним эти два условия или захотим отлаживать ядро, отличное от Chromium?

Мы не упомянули, от какой среды зависит использование ndb.PuppeteerПакет Puppeteer — это пакет, который управляет Chromium через протокол Chrome DevTools, который предоставляет множество инкапсулированных интерфейсов.

Puppeteer is a dependency of ndb

Когда ndb устанавливает Puppeteer, в зависимостях также устанавливается последняя версия Chromium, совместимая с текущей средой.

Поскольку он устанавливается независимо, ndb не зависит от браузера операционной системы.Эта независимая от браузера функция также стала преимуществом ndb.

Но это также приносит проблему, то есть node_modules будет относительно большим, ведь в нем есть Chromium.

Итак, каков опыт отладки ndb?

исследовать ндб

Первый шаг — использовать экспресс для создания демо-приложения узла:


// app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => res.send('Hello World!'));

app.listen(3000, () => console.info('Example app listening on port 3000!'));


Затем определите сценарий запуска в package.json:


"scripts": {
  "start": "node app.js"
}

Как установить

Сначала мы устанавливаем ndb в глобальном окружении или локально.


npm install -g ndb

начать ндб

У нас есть несколько способов запустить ndb:

1️⃣ - Запустить файл напрямую

Мы можем запустить ndb, выполнив файл напрямую с помощью команды ndb, например:


ndb app.js


Debugging a script file directly

2️⃣ - запустить бинарный исполняемый файл

Иногда мы хотим использовать ndb для отладки служб, запускаемых исполняемыми двоичными файлами, такими как сценарии npm, веб-пакеты, модульные тесты и т. д.

Просто выполните следующую команду:


ndb npm start

Выше мы использовали ndb для запуска скрипта npm.Точно так же, если конфигурация правильная, мы также можем запуститьndb webpackилиndb mochaкоманда ожидания

Debugging by running npm script

3️⃣ - Запустить проект

Если нам просто нужно открыть службу ndb, мы можем запустить ее прямо в каталоге проекта.ndb .чтобы открыть, эта команда позволяет нам устанавливать точки останова, редактировать файлы или что-либо еще перед выполнением скрипта.

Debugging a project

PS: В следующих примерах мы все используем третий метод запуска, чтобы продемонстрировать

поместить точку останова

Размещение точек останова во время отладки легко

Placing a breakpoint on the HTTP response

Мы можем размещать точки останова до фактической загрузки модуля.

С файлами

Используя Chrome DevTools, мы можем создавать и редактировать файлы в нашем проекте и сохранять их.

Changing the source code of a script file

запускать npm-скрипты

Если в проекте есть какие-то npm-скрипты, их можно запустить через панель ndb

![Running an npm script]очистить и съесть.url.can/feeds_batch/ah…)

Встроенный терминал

Вы также можете напрямую получить доступ к терминалу через ndb

Opening the built-in terminal panel

Blackboxing

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

Blackboxing the module loader of Node.js

Панель процесса

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

Terminating a child and parent process by single click

сегмент кода

ndb поддерживает создание некоторых фрагментов кода для выполнения и отладки.

Creating and executing a snippet

переменный доступ

Доступны текущие переменные процесса и глобальные переменные узла, ndb

Logging `process` object to Console


Технологический еженедельник IVWEBШок в сети, обратите внимание на публичный номер: сообщество IVWEB, регулярно каждую неделю публикуйте качественные статьи.

  • Сборник статей еженедельника:weekly
  • Командные проекты с открытым исходным кодом:Feflow