Как отлаживать приложения Node.js?
-
19-09-2019 - |
Вопрос
Как отладить серверное приложение Node.js?
Сейчас я в основном использую отладка оповещений с такими операторами печати:
sys.puts(sys.inspect(someVariable));
Должен быть лучший способ отладки.я знаю это Гугл Хром имеет отладчик командной строки.Доступен ли этот отладчик и для Node.js?
Решение 3
А V8 отладчик, выпущенный как часть Google Инструменты разработчика Chrome можно использовать для отладки сценариев Node.js.Подробное объяснение того, как это работает, можно найти в Node.js GitHub вики.
Другие советы
инспектор узлов может спасти положение!Используйте его из любого браузера, поддерживающего Вебсокет.Точки останова, профилировщик, живое кодирование и т. д.Это действительно потрясающе.
Установите его с помощью:
npm install -g node-inspector
Затем запустите:
node-debug app.js
Отладка
Профилирование
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Флеймграфы
- 0x
- jam3/devtool затем Таблицы Flame инструментов разработчика Chrome
- Дтраце и СтекВис — Поддерживается только в SmartOS
- клиникаjs
Отслеживание
Ведение журнала
Библиотеки, выводящие отладочную информацию
Библиотеки, расширяющие информацию трассировки стека
Бенчмаркинг
- Апачская скамейка:
ab -n 100000 -c 1 http://127.0.0.1:9778/
- работать
Другой
Наследие
Раньше они работали, но больше не поддерживаются или больше не применимы к современным версиям узлов.
- https://github.com/bnoordhuis/node-profiler - заменена встроенной отладкой
- https://github.com/c4milo/node-webkit-agent - заменен инспектором узлов
- https://nodetime.com/ - несуществующий
Узел имеет свой собственный встроенный Отладчик с графическим интерфейсом версии 6.3 (с использованием Chrome DevTools)
Просто передайте флаг инспектора, и вам будет предоставлен URL-адрес инспектора:
node --inspect server.js
Вы также можете разбиться на первую строку, передав --inspect-brk
вместо.
Чтобы открыть окно Chrome автоматически, используйте процесс проверки модуль.
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
Node.js версии 0.3.4+ имеет встроенную поддержку отладки.
node debug script.js
Руководство: http://nodejs.org/api/debugger.html
Код Visual Studio будет моим выбором для отладки.Никаких накладных расходов на установку каких-либо инструментов или npm install
вещи.Просто установите начальную точку вашего приложения в package.json, и VSCode автоматически создаст файл конфигурации внутри вашего решения.Это основано на Электрон, на котором построены такие редакторы, как Atom.
VS -код дает аналогичный опыт отладки, как и в других IDE, таких как VS, Eclipse и т. Д.
Я лично использую JetBrains ВебШторм поскольку это единственная найденная мной IDE для JavaScript, которая отлично подходит как для внешнего, так и для внутреннего JavaScript.
Он работает на нескольких ОС и имеет встроенную отладку Node.js (а также массу других вещей](http://www.jetbrains.com/webstorm/features/index.html).
Мои единственные «проблемы»/пункты списка желаний являются были:
Кажется, Mac требует больше ресурсов, чем Windows.В версии 6 это больше не проблема.Было бы неплохо, если бы у него была поддержка сниппетов (как у Возвышенный текст 2 - т.е.введите «fun» и нажмите «tab», чтобы добавить функцию.См. комментарий @WickyNilliams ниже. Благодаря Live Templates у вас также есть поддержка фрагментов.
Тезей — это исследовательский проект Adobe, который позволяет отлаживать код Node.js в их редакторе с открытым исходным кодом. Кронштейны.Он имеет некоторые интересные функции, такие как покрытие кода в реальном времени, ретроактивная проверка, асинхронное дерево вызовов.
Здесь много отличных ответов, но я хотел бы добавить свое мнение (основываясь на том, как развивался мой подход)
Отчет об ошибках
Посмотрим правде в глаза: мы все любим хорошее console.log('Uh oh, if you reached here, you better run.')
и иногда это отлично работает, поэтому, если вы не хотите отходить слишком далеко от этого, по крайней мере, добавьте немного шика в свои журналы с помощью Отладка Visionmedia.
Интерактивная отладка
Каким бы удобным ни было ведение журналов в консоли, для профессиональной отладки вам придется засучить рукава и погрузиться в работу.Устанавливайте точки останова, просматривайте код, проверяйте области видимости и переменные, чтобы выяснить, что вызывает такое странное поведение.Как уже отмечали другие, инспектор узлов на самом деле это пчелиные колени.Он делает все, что вы можете сделать с помощью встроенного отладчика, но с использованием знакомого интерфейса Chrome DevTools.Если вы, как и я, используете Вебшторм, затем здесь оттуда — удобное руководство по отладке.
Трассировки стека
По умолчанию мы не можем отслеживать серию операций в разных циклах цикла событий (тиках).Чтобы обойти это, взгляните на Длинный Джон (но не в производстве!).
Утечки памяти
С Node.js мы можем ожидать, что серверный процесс будет работать в течение значительного времени.Что делать, если вы считаете, что это привело к неприятным утечкам информации?Использовать свалка кучи и Chrome DevTools, чтобы сравнить некоторые снимки и посмотреть, что меняется.
Несколько полезных статей см.
Если вам хочется посмотреть видео(а), то
- Netflix JS Talks – Отладка Node.js в производстве
- Интересное видео от рабочая группа по отслеживанию по отслеживанию и отладке node.js
- Действительно информативное 15-минутное видео о Node-Inspector
Какой бы путь вы ни выбрали, просто убедитесь, что вы понимаете, как происходит отладка.
Это болезненная вещь
Чтобы посмотреть на свою проблему и узнать
Что ты сам и никто другой не сделал этогоСофокл, Аякс
Node.js Инструменты для Visual Studio 2012 или 2013 включает в себя отладчик. Обзор здесь говорится «Node.js инструменты для Visual Studio включает в себя полную поддержку отладки узлов приложений.». Будучи новой для Node.js, но имеющий опыт работы в .NET, я нашел, что это дополнение, чтобы быть отличным способом для отладки Node.js приложений. Р>
Код Visual Studio имеет действительно хорошую поддержку отладки Node.js.Он бесплатный, кроссплатформенный с открытым исходным кодом и работает на Linux, OS X и Windows.
Вы даже можете отлаживать задачи хрюкать и глотать, если вам нужно...
Я написал другой подход к отладке кода Node.js, который стабилен и чрезвычайно прост.Он доступен по адресу https://github.com/s-a/iron-node.
Кроссплатформенный визуальный отладчик с открытым исходным кодом.
Монтаж:
npm install iron-node -g;
Отлаживать:
iron-node yourscript.js;
Если вы используете Атом IDE, вы можете установить node-debugger
упаковка.
Использование Chrome версии 67.0.3396.62(+)
- Запустить приложение узла
node --inspect-brk=0.0.0.0:9229 server.js(имя файла js сервера)
- Просмотрите свое приложение в Chrome, например.«локальный хост: порт»
- Откройте Инструменты разработчика.
- Щелкните значок узла рядом со значком адаптивного устройства.
Появится еще одно окно DevTools, предназначенное специально для отладки приложения узла.
Я создал аккуратный маленький инструмент под названием pry.js это может вам помочь.
Поместите простой оператор где-нибудь в свой код, запустите сценарий в обычном режиме, и узел остановит текущий поток, предоставив вам доступ ко всем вашим переменным и функциям.Просматривайте/редактируйте/удаляйте их по своему желанию!
pry = require('pryjs')
class FizzBuzz
run: ->
for i in [1..100]
output = ''
eval(pry.it) # magic
output += "Fizz" if i % 3 is 0
output += "Buzz" if i % 5 is 0
console.log output || i
bar: ->
10
fizz = new FizzBuzz()
fizz.run()
Есть встроенная командная строка клиент отладчика внутри Node.js.Cloud 9 IDE тоже довольно приятный (визуальный) отладчик.
Visual Studio кодекса будет работать для нас в отладке.
Я собрал короткометражку Руководство по отладке Node.js по использованию инспектор узлов для тех, кто не знает, с чего начать.
Используйте Вебшторм!Он идеально подходит для отладки приложений Node.js.Имеет встроенный отладчик.Ознакомьтесь с документами здесь: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
Если вам нужна мощная библиотека журналирования для Node.js, Трейсер https://github.com/baryon/tracer это лучший выбор.
Он выводит сообщения журнала с отметкой времени, именем файла, именем метода, номером строки, путем или стеком вызовов, поддерживает цветную консоль и легко поддерживает передачу базы данных, файлов и потоков.Я автор.
Предполагая, что на вашем компьютере установлен node-inspector (если нет, просто введите «npm install -g node-inspector»), вам просто нужно запустить:
node-inspector & node --debug-brk scriptFileName.js
И вставьте URI из командной строки в браузер WebKit (Chrome/Safari).
Запустите процесс узла с помощью --осмотреть флаг.
node --inspect index.js
а затем Открыть chrome://inspect
в хроме.Нажмите ссылку «Открыть выделенные инструменты разработчика для Node» или установите этот Расширение Chrome для легкого открытия Chrome DevTools.
Для получения дополнительной информации см. этот связь
Есть много возможностей...
- узел включает в себя утилита отладки
- инспектор узлов
- Редакторы кода/IDE (см. инструкции по отладке одного из следующих)
Поддержка отладки часто реализуется с использованием Протокол отладки v8 или новее Протокол отладки Chrome.
Существует новый открытый исходный код Нодеклипс проект (как плагин Eclipse или Эниде Студия):
Nodeclipse стал номером 1 в 10 лучших НОВЫХ плагинов Eclipse на 2013 год.Он использует модифицированный V8 отладчик (из инструментов разработчика Google Chrome для Java).
Nodeclipse — бесплатное программное обеспечение с открытым исходным кодом. выходит в начале каждого месяца.
IntelliJ прекрасно работает для Node.js.
Кроме того, IntelliJ хорошо поддерживает «Помощь по коду».
А NetBeans С тех пор в IDE появилась поддержка Node.js. версия 8.1:
<...>
Основные характеристики новых функций
Разработка приложений Node.js
- Мастер создания нового проекта Node.js
- Новый мастер Node.js Express
- Расширенный редактор JavaScript
- Новая поддержка запуска приложений Node.js.
- Новая поддержка отладки приложений Node.js.
<...>
Дополнительные ссылки:
Используйте эти команды
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
Быстрый и простой способ отладки небольших скриптов Node.js с помощью ваших любимых отладчик браузера было бы использовать просмотреть в браузере.Обратите внимание, что этот подход не работает с приложениями, которым требуются собственные библиотеки ввода-вывода, но он достаточно хорош для большинства небольших сценариев.
$ npm install -g browserify
Теперь переместите все свои var x = requires('x')
звонит в requires.js
файл и запустите:
$ browserify requires.js -s window -o bundle.js
(Недостаток здесь в том, что вам придется либо переместить, либо прокомментировать requires
во всех ваших файлах.)
Включите bundle.js
в HTML-файле следующим образом:
<script type="text/javascript" src="bundle.js"></script>
Теперь загрузите файл в браузер и нажмите F12 и альт:отладка в браузере.
ndb — это улучшенный способ отладки Node.js, реализованный с помощью Chrome DevTools.