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

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

сейчас я в основном использую предупреждение отладки С такими утверждениями печати:

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

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

30 ответов


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

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

npm install -g node-inspector

запустите:

node-debug app.js

отладка

профилирования

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

Heapdumps

Flamegraphs

трассировка

лесозаготовки

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

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

бенчмаркинг

другое

наследие

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


на V8 отладчик выпущен как часть Google Инструменты Разработчика Chrome может использоваться для отладки узла.js скрипты. Подробное объяснение как это работает можно найти в узел.JS GitHub wiki.


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

Nodes builtin GUI debugger

просто передайте флаг инспектора, и вам будет предоставлен 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

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

node debug script.js

руководство:http://nodejs.org/api/debugger.html


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

VS Code дает аналогичный опыт отладки, как вы могли бы иметь имел в других Идах, таких как VS, Затмение и т. д.

enter image description here enter image description here


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

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

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

  1. вроде бы больше ресурсов голодных на Mac, чем Windows это уже не кажется проблемой в версии 6.
  2. было бы неплохо, если бы у него была поддержка фрагментов (например,Возвышенный Текст 2 - т. е. введите " fun "и нажмите "tab", чтобы ввести функцию. см. комментарий @WickyNilliams ниже - с живыми шаблонами у вас также есть поддержка фрагментов.

Тесей - это проект Adobe research, который позволяет отлаживать ваш узел.JS код в Редактор с открытым исходным кодом скобки. Он имеет некоторые интересные функции, такие как покрытие кода в реальном времени, ретроактивная проверка, асинхронное дерево вызовов.

screenshot


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

Отладочный Журналы

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

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

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

стек Следы

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

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

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


для некоторых полезных статей, проверьте

Если вы хотите посмотреть видео(ы), то

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

enter image description here

Это болезненная вещь
Смотреть на свою беду и знать!--71--> Что вы сами и никто другой этого не сделали

Софокл, Ajax


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


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

вы даже можете отлаживать ворчать и глотать задачи, Если вам нужно...


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

Enter image description here

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

установка:

npm install iron-node -g;

Debug:

iron-node yourscript.js;


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


Я создал аккуратный маленький инструмент под названием монтировку.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()

есть встроенная командная строка клиент отладчика внутри узла.js. Cloud 9 IDE также довольно приятный (визуальный) отладчик.


Код Visual Studio будет работать для нас в отладке.


Я собрал короткий узел.JS debugging primer С помощью узел-инспектор для тех,кто не уверен, с чего начать.


начните процесс узла с --inspect флаг.

node --inspect index.js

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

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


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

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


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

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

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



Использовать Webstorm! Он идеально подходит для отладки узла.приложения на JS. Он имеет встроенный отладчик. Ознакомьтесь с документами ЗДЕСЬ: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html


есть новый open-source Nodeclipse проект (как плагин Eclipse или Enide Studio):

http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

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

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


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

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

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

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

enter image description here

появится еще одно окно DevTools, которое будет всплывать специально для отладки приложения node.

enter image description here


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

кроме того, IntelliJ поддерживает "помощь кода" хорошо.


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

поддержка отладки часто реализовано с использованием V8 с протоколом или новее Протокол Отладки Chrome.


быстрый и грязный способ отладки небольшого узла.js скрипты с вашим любимым отладчик браузера можно использовать browserify. Обратите внимание, что этот подход не работает с приложениями, которые требуют собственных библиотек ввода-вывода, но он достаточно хорош для большинства небольших сценариев.

$ npm install -g browserify

Теперь переместите все ваши var x = requires('x') вызовы в и

$ browserify requires.js -s window -o bundle.js

(недостатком здесь является то, что вам нужно либо переместить, либо прокомментировать requires in все ваши файлы.)

включить bundle.js в HTML-файле, например:

<script type="text/javascript" src="bundle.js"></script>

теперь загрузите файл в браузере и нажмите F12 и viola: отладка в браузере.


на NetBeans IDE имеет узел.поддержка js с версия 8.1:

<...>

Новые Возможности Программы

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

  • Новый Узел.мастер проекта js
  • Новый Узел.JS Express wizard
  • Расширенный Редактор JavaScript
  • новая поддержка запущенного узла.приложения на JS
  • новая поддержка для узел отладки.приложения на JS.

<...>

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

  1. В NetBeans Вики / NewAndNoteworthyNB81.
  2. узел.JS Express App в IDE NetBeans, Geertjan-Oracle.

node-debug -p 8888 scriptFileName.js

Я хотел бы использовать хороший Лабс "Уолмарт". Он будет делать свою работу, и это очень гибкий:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});