Как отлаживать приложения Node.js?

Как отлаживать серверное приложение Node.js?

В настоящее время я в основном использую отладочную информацию с инструкциями печати следующим образом:

sys.puts(sys.inspect(someVariable));

Должен быть лучший способ отладки. Я знаю, что Google Chrome имеет отладчик командной строки. Этот отладчик доступен и для Node.js?

Ответы

Ответ 2

node-inspector может спасти день! Используйте его из любого браузера, поддерживающего WebSocket. Точки останова, профилировщик, livecoding и т.д. Это действительно потрясающе.

Установите его с помощью:

npm install -g node-inspector

Затем запустите:

node-debug app.js

Ответ 3

Отладка

Профилирование

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

Flamegraphs

Трассировка

Вход

Библиотеки, которые выводят отладочную информацию

Библиотеки, улучшающие информацию трассировки стека

Бенчмаркинг

Другое

Наследие

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

Ответ 4

Node имеет свой собственный встроенный отладчик GUI с версии 6.3 (с использованием Chrome DevTools)

Узел встроенного отладчика GUI

Просто передайте флаг инспектора, и вам будет предоставлен URL-адрес инспектора:

node --inspect server.js

Вы также можете разбить первую строку, перейдя вместо --inspect-brk.

Чтобы автоматически открыть окно Chrome, используйте модуль inspect-process.

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js

Ответ 5

Node.js версия 0.3.4+ имеет встроенную поддержку отладки.

node debug script.js

Вручную: http://nodejs.org/api/debugger.html

Ответ 6

Код Visual Studio будет моим выбором для отладки. Нет накладных расходов на установку каких-либо инструментов или npm install. Просто установите начальную точку вашего приложения в package.json и VSCode автоматически создаст файл конфигурации внутри вашего решения. Он основан на Electron, на котором построены редакторы, такие как Atom.

Код VS дает аналогичный отладочный опыт, как вы могли бы в других IDE, таких как VS, Eclipse и т.д.

введите описание изображения здесь введите описание изображения здесь

Ответ 7

Я лично использую JetBrains WebStorm, так как это единственная JavaScript IDE, которую я нашел, которая отлично подходит как для внешнего интерфейса, так и для бэкэнд-кода JavaScript.

Он работает на нескольких ОС и имеет Node.js отладочную встроенную (а также тонну других вещей) (http://www.jetbrains.com/webstorm/features/index.html).

Мои единственные элементы "вопросов/пожеланий" - были:

  • Кажется, что на Mac больше ресурсов, чем Windows. Это больше не проблема в версии 6.
  • Было бы неплохо, если бы у него была поддержка Snippet (например, Sublime Text 2 - т.е. введите "fun" и нажмите "вкладка", чтобы вставить функция. См. комментарий @WickyNilliams ниже. С помощью Live Templates у вас также есть поддержка фрагментов.

Ответ 8

Theseus - это проект исследования Adobe, который позволяет отлаживать ваш код Node.js в редакторе Open Source Brackets. Он имеет некоторые интересные функции, такие как покрытие кода в реальном времени, ретроактивное обследование, асинхронное дерево вызовов.

screenshot

Ответ 9

Здесь много замечательных ответов, но я хотел бы добавить свое мнение (исходя из того, как мой подход развился)

Журналы отладки

Посмотрим правде в глаза, мы все любим хороший console.log('Uh oh, if you reached here, you better run.'), и иногда это отлично работает, поэтому, если вы не согласны с тем, чтобы двигаться слишком далеко от него, по крайней мере, добавьте bling в свои журналы с помощью Отладка Visionmedia.

Интерактивная отладка

Так же удобно, как ведение журнала консоли, чтобы отлаживать профессионально, вам нужно засучить рукава и застрять. Установите точки останова, выполните свой код, просмотрите области и переменные, чтобы узнать, что вызывает это странное поведение. Как отмечали другие, node-inspector действительно является пчелиными колени. Он делает все, что вы можете сделать со встроенным отладчиком, но используя этот знакомый интерфейс Chrome DevTools. Если, как и я, вы используете Webstorm, тогда здесь является удобным руководством для отладки оттуда.

Трассировка стека

По умолчанию мы не можем проследить ряд операций в разных циклах цикла событий (тики). Чтобы обойти это, посмотрите longjohn (но не на производстве!).

Утечки памяти

С Node.js мы можем ожидать, что серверный процесс будет оставаться на значительное время. Что вы делаете, если думаете, что это вызвало некоторые неприятные утечки? Используйте heapdump и Chrome DevTools, чтобы сравнить некоторые снимки и посмотреть, что меняется.


Для некоторых полезных статей ознакомьтесь с

Если вам нравится смотреть видео (ы), то

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

введите здесь описание изображения

Это болезненная вещь
Чтобы посмотреть на свои проблемы и узнать Что вы сами и никто другой не сделал это

Софокл, Аякс

Ответ 10

Node.js Инструменты для Visual Studio 2012 или 2013 включает отладчик. В обзоре здесь говорится: "Node.js Инструменты для Visual Studio включают полную поддержку отладки node приложений". Будучи новичком в Node.js, но имея фон в .NET, я нашел, что это добавление является отличным способом отладки приложений Node.js.

Ответ 11

Код Visual Studio имеет действительно приятную Node.js поддержку отладки. Он бесплатный, с открытым исходным кодом и кросс-платформенный и работает на Linux, OS X и Windows.

Вы даже можете отлаживать grunt и gulp задачи, если вам нужно...

Ответ 12

Я написал другой подход к отладке кода Node.js, который стабилен и чрезвычайно прост. Он доступен на https://github.com/s-a/iron-node.

Enter image description here

Кроссплатформенный визуальный отладчик с открытым исходным кодом.

Установка:

npm install iron-node -g;

Debug:

iron-node yourscript.js;

Ответ 13

Если вы используете Atom IDE, вы можете установить пакет node-debugger.

Ответ 14

Использование Chrome версии 67.0.3396.62 (+)

  1. Запустить приложение узла

узел --inspect-brk = 0.0.0.0: 9229 server.js (имя файла сервера js)

  1. Просмотрите ваше приложение в Chrome, например, "localhost: port"
  2. Откройте DevTools.
  3. Нажмите на значок узла рядом со значком адаптивного устройства.

enter image description here

Будет другое окно DevTools, которое будет появляться специально для отладки приложения узла.

enter image description here

Ответ 16

Я создал аккуратный маленький инструмент под названием pry.js, который может помочь вам.

Поместите простой оператор где-нибудь в свой код, запустите script нормально, а node остановит текущий поток, предоставив вам доступ ко всем вашим переменным и функциям. Просматривать/редактировать/удалять их по желанию!

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

Ответ 17

Visual Studio Code будет работать для нас при отладке.

Ответ 20

Запустите процесс узла с помощью флага --inspect.

node --inspect index.js

а затем "Открыть chrome://inspect в хроме". Нажмите ссылку "Открыть выделенный DevTools для узла" или установите это расширение хром для быстрого открытия хром DevTools.

Для получения дополнительной информации обратитесь к этой ссылке

Ответ 21

Если вам нужна мощная библиотека журналов для Node.js, то лучше выбрать Tracer https://github.com/baryon/tracer.

Он выводит сообщения журнала с меткой времени, именем файла, именем метода, номером строки, путем или стеком вызовов, поддерживает цветовую консоль, а также легко поддерживает базу данных, файл, транспорт потока. Я автор.

Ответ 22

Предполагая, что на вашем компьютере установлен node -инспектор (если нет, просто введите "npm install -g node-inspector" ), вам просто нужно запустить:

node-inspector & node --debug-brk scriptFileName.js

И вставьте URI из командной строки в браузер WebKit (Chrome/Safari).

Ответ 24

Существует новый проект Nodeclipse с открытым исходным кодом (в виде плагина Eclipse или Enide Studio):

Nodeclipse стал # 1 в Топ-10 новых плагинов Eclipse для 2013. Он использует измененный отладчик V8 (из Google Chrome Developer Tools для Java).

Nodeclipse - это бесплатное программное обеспечение с открытым исходным кодом , выпускаемое в начале каждого месяца.

Ответ 25

Есть много возможностей...

Поддержка отладки часто реализуется с использованием протокола отладки v8 или более нового протокола отладки Chrome.

Ответ 26

IntelliJ прекрасно работает для Node.js.

Кроме того, IntelliJ хорошо поддерживает "Code Assistance".

Ответ 27

NetBeans У IDE была поддержка Node.js, поскольку версия 8.1:

<... >

Основные особенности функции

Node.js Разработка приложений

  • Новый мастер проекта Node.js
  • Новый Node.js Экспресс-мастер
  • Расширенный редактор JavaScript
  • Новая поддержка для запуска приложений Node.js
  • Новая поддержка отладки приложений Node.js.

<... >

Дополнительные ссылки:

Ответ 28

Используйте эти команды

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect

Ответ 29

Быстрый и грязный способ отладки небольших сценариев 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 и альт: отлаживайте в браузере.