Переводчик пресса:В этой статье рассказывается об использовании Node Inspector для отладки приложений JavaScript и TypeScript.
- оригинал:Отладка приложений JavaScript/TypeScript Node с помощью Chrome DevTools, VS Code и WebStorm 🐞🔫
- Переводчик:Fundebug
Для обеспечения удобочитаемости в этой статье используется вольный перевод, а не дословный перевод. Кроме того, авторские права на эту статью принадлежат оригинальному автору, а перевод предназначен только для ознакомления.
Я подготовил пример расчета последовательности Фибоначчи и поместил его вРепозиторий на гитхабе. Я предлагаю вам поставить егоклонСпустись и следуй за мной. Конечно, это не обязательно.
$ git clone https://github.com/andrerpena/medium-node-inspector-tests.git
$ cd medium-node-inspector-tests
$ npm i
Я записал все команды, которые мне нужно использовать в этой статье, в скрипты. Если вы не клонировали код, то обратитесь к следующему скрипту:
"scripts": {
"build:ts": "tsc",
"start": "node index.js",
"start:watch": "nodemon index.js",
"start:debug": "node --inspect index.js",
"start:debug:brk": "node --inspect-brk index.js",
"start:debug:ts": "node --inspect --require ts-node/register index.ts",
"start:debug:ts:brk": "node --inspect-brk --require ts-node/register index.ts"
}
Когда ваша среда настроена, вы можете использоватьnpm start
запустить программу и получить доступlocalhost:3000/[n]
для просмотра последовательности Фибоначчи.
Поскольку я хотел продемонстрировать отладку JavaScript и TypeScript, все, что я написал,index.ts
Файл и соответствующая версия JavaScript генерируются командой tsc. Итак, версия JavaScript будет выглядеть немного некрасиво.
Работа в режиме отладки
Мы будем использовать два режима для отладки. использовать отдельно--inspect
а также--inspect-brk
. Разница между ними в том, что второй фактически не запустится, пока не будет подключен такой агент, как Chrome DevTools. И после запуска он автоматически останавливается на первой строке кода пользователя.
Когда приложение Node.js работает в режиме проверки, следует обратить внимание на две вещи:
-
Этому сеансу отладки будет назначен UUID. При этом всегда будет подключен WebSockets-терминал (ws://127.0.0.1:9229/[UUID]). Терминал будет отправлять статус кода в режиме реального времени.
-
HTTP-терминал (
http://127.0.0.1:9229/json
) будет предоставляться, чтобы конечные точки, такие как Chrome DevTools, знали о сеансе Node и соответствующем UUID.
Ты сможешьcurl http://127.0.0.1:9229/json
. Для получения дополнительной информации см.:legacy-debugger.
Отладка JavaScript с помощью Chrome DevTools
бегать:
npm start:debug // if you're on the suggested repo or...
node --inspect index.js // ...otherwise.
ты увидишь:
Вы можете видеть, что сервер WebSocket запущен и прослушивает порт 9229. и, как вы можете видеть, UUID5dc97...
. Каждая сессия имеет свой собственный UUID. Если вы перезапустите службу, UUID изменится.
Следующий шаг — открыть Chrome и ввести Chrome://inspect в поле URL.
Вот что я хочу сказать: доступ Chromehttp://127.0.0.1:9229/json
Запущенные сеансы могут быть обнаружены автоматически. Теперь нажмите на нижнюю часть изображения вышеinspect
чтобы начать отладку. Откроется новое окно DevTools. Вы можете посетить файл, который хотите отладить, и добавить точки останова для отладки.
Если вы запускаете:
npm start:debug:brk // if you're on the suggested repo or...
node --inspect-brk index.js // ...otherwise.
можно увидеть:
Когда вы вводите Chrome://Inspect в Google Chrome, вы найдете две версии файлов TypeScript: одну с соответствующей исходной картой (отмеченной как [sm] ), а другую без. Конечно, если вы хотите отладить, поставьте точку останова в файле, отмеченном sm.
С таким количеством инструментов, доступных для разработки, что будет после запуска? Вы все еще можете отлаживать с удовольствием? Вы можете, добро пожаловать в использованиеFundebug!
Отладка JavaScript с помощью Visual Studio
Выберите целевой файл JavaScript для отладки, выберите параметр «Отладка» (Mac: Shift+Cmd+D), а затем нажмите кнопку «Выполнить» (▶️). Visual Studio автоматически запустит Node с параметром проверки.
Пожалуйста, нажмите на ссылку ниже, чтобы просмотреть исходное видео.
Вы также можете создать файл конфигурации запуска, если хотите запускать из консоли. Автозаполнение Visual Studio просто великолепно. Помните, что 9929 — это номер порта Node Inspector по умолчанию.
{
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9229
}
]
}
Если вы достаточно внимательны, вы обнаружите, что в приведенном выше файле конфигурации не указан UUID. На самом деле Visual Studio будет автоматически получать доступws://127.0.0.1:9229
чтобы получить статус текущего сеанса. После того, как вы настроили его, вы можете запустить его в консоли:
npm start:debug // if you're on the suggested repo or...
node --inspect index.js // ...otherwise.
Затем настройте конфигурацию запуска иAttatch
, желательно нажав кнопку воспроизведения. Следующим образом:
Отладка TypeScript с помощью Visual Studio
В Visual Studio, если настроен «тип»: «узел», файлы с суффиксом .ts не разрешены, тогда у вас есть два метода: либо скомпилировать .ts с ts-узлом.
{
"configurations": [
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/.bin/ts-node",
"args": ["${relativeFile}"],
"protocol": "inspector"
}
]
}
Или укажите runtimeExecutable как NPM вместо узла по умолчанию.
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch via NPM",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script",
"start:debug:ts"
],
"port": 9229
},
]
}
Если вы хотите запустить TypeScript в консоли следующим образом:
npm start:debug:ts // if you're on the suggested repo or...
node --require ts-node/register index.ts // ...otherwise.
Конфигурация запуска следующая:
{
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach",
"port": 9229
}
]
}
Отладка JavaScript с помощью WebStorm
В правом верхнем углу вы можете выбратьRun/Debug Configurations
, нажмите и выберите знак +, и будет отображено множество конфигураций-кандидатов. Затем выберите Node.js и дайте ему имя. В опции файла JavaScript заполните свой входной файл. Тогда вы можете запустить его.
Отладка TypeScript с помощью WebStorm
Это почти то же самое, что и конфигурация для обработки JavaScript, но в опции Node Parameters вам нужно заполнить--inspect --require ts-node/register
.
Я надеюсь, что эта статья поможет вам (весело) отладить с удовольствием!