Как мне отладить узел.приложения js?
как отладить узел.серверное приложение js?
сейчас я в основном использую alert debugging с печатью заявления, как это:
sys.puts(sys.inspect(someVariable));
должен быть лучший способ отладки. Я знаю, что Google Chrome имеет отладчик командной строки. Доступен ли этот отладчик для узла.JS как хорошо?
30 ответов:
узел-инспектор может спасти день! Используйте его из любого браузера, поддерживающего WebSocket. Точек останова, профилировщик, ливкодинга и т. д... Это действительно потрясающе.
установите его с помощью:
npm install -g node-inspectorзапустите:
node-debug app.js
отладка
- Joyent это
- отладчик
- Узел Инспектора
- Visual Studio Code
- Cloud9
- скобки
профилирования
node --prof ./app.jsnode --prof-process ./the-generated-log-fileHeapdumps
Flamegraphs
- 0x
- jam3/devtool затем Chrome Developer Tools Flame Charts
- Dtrace и StackVis -поддерживается только на SmartOS
трассировка
лесозаготовки
библиотеки, выводящие отладочную информацию
библиотеки, которые улучшают информацию трассировки стека
бенчмаркинг
- Apache Bench:
ab -n 100000 -c 1 http://127.0.0.1:9778/- wrk
другое
наследие
они используются для работы, но больше не поддерживаются или больше не применимы к современному узлу версии.
- https://github.com/bnoordhuis/node-profiler - заменено встроенной отладкой
- https://github.com/c4milo/node-webkit-agent - заменено инспектором узлов
- https://nodetime.com/ - несуществующий
The V8 отладчик выпущен в составе Google Chrome Developer Tools может использоваться для отладки узла.js скрипты. Подробное объяснение как это работает можно найти в узел.JS GitHub wiki.
узел имеет свой собственный построен в GUI debugger начиная с версии 6.3 (с помощью Chrome DevTools)
просто передайте флаг инспектора, и вам будет предоставлен 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 Code будет мой выбор для отладки. Никаких накладных расходов на установку каких-либо инструментов или
npm installвещи. Просто установите начальную точку вашего приложения в пакете.json и VSCode автоматически создадут файл конфигурации внутри вашего решения. Это построить на Электрон, на котором построены такие редакторы, как Atom.VS код дает подобный опыт отладки, как вы могли бы иметь в других IDE, как против, Затмение и т. д.
Я лично использую JetBrains WebStorm поскольку это единственная JavaScript IDE, которую я нашел, которая отлично подходит как для интерфейсного, так и для бэкэнд-JavaScript.
Он работает на нескольких ОС и узел.JS отладки встроенный (а также тонны других вещей] (http://www.jetbrains.com/webstorm/features/index.html).
мои единственные "проблемы" / элементы списка желаний
areбыли:
похоже, что больше ресурсов голодных на Mac, чем Windowsэто уже не кажется проблемой в версии 6.было бы неплохо, если бы он имел поддержку сниппета (например,Возвышенный Текст 2 - т. е. введите " fun "и нажмите "tab", чтобы ввести функцию.см. комментарий @WickyNilliams ниже-с живыми шаблонами у вас также есть поддержка фрагментов.
здесь много отличных ответов, но я хотел бы добавить свой взгляд (основанный на том, как мой подход эволюционировал)
Отладочный Журналы
давайте посмотрим правде в глаза, мы все любим хороший
console.log('Uh oh, if you reached here, you better run.')и иногда это отлично работает, поэтому, если вы сдержанны, чтобы отойти слишком далеко от него, по крайней мере, добавьте немного побрякушек в свои журналы с отладка Visionmedia.Интерактивная Отладка
как удобно, как консоль регистрации может быть, для отладки профессионально вам нужно свернуть ваш рукава так и застревают. Установите точки останова, шаг через код, проверьте области и переменные, чтобы увидеть, что вызывает это странное поведение. Как уже говорили другие, узел-инспектор действительно пчелы-колени. Он делает все, что вы можете сделать со встроенным отладчиком, но с помощью этого знакомого интерфейса Chrome DevTools. Если, как и я, вы используете Webstorm, потом здесь это удобное руководство по отладке оттуда.
стек Следы
по умолчанию мы не можем проследить последовательность операций в разных циклах цикла событий (тики). Чтобы обойти это, взгляните на longjohn (но не в производстве!).
Утечки Памяти
С Узла.js у нас может быть серверный процесс, который, как ожидается, будет оставаться в течение значительного времени. Что делать,если вы думаете, что это вызвало некоторые неприятные утечки? Используйте heapdump и Chrome DevTools, чтобы сравнить некоторые снимки и посмотреть, что изменение.
для некоторых полезных статей, проверьте
Если вы хотите посмотреть видео(ы), то
- Netflix JS Talks-узел отладки.js в производстве
- интересное видео С отслеживание рабочая группа на узле трассировки и отладки.js
- действительно информативное 15-минутное видео на node-inspector
какой бы путь вы ни выбрали, просто убедитесь, что вы понимаете, как вы отлаживаете
Это болезненная вещь
Посмотреть на свою беду и знать
Что ты сам и никто другой этого не сделалСофокл, Ajax
узел.JS Tools for Visual Studio 2012 или 2013 включает в себя отладчик. Обзор здесь государства "узел.JS Tools for Visual Studio включает в себя полную поддержку отладки приложений узла.". Будучи новичком в узле.js, но имея фон в .NET, я обнаружил, что это дополнение является отличным способом отладки узла.приложения на JS.
Visual Studio Code действительно хороший узел.поддержка отладки js. Он является бесплатным, открытым исходным кодом и кросс-платформенным и работает на Linux, OS X и Windows.
вы даже можете отлаживать хрюкать и глотать задачи, Если вам нужно...
Я написал другой подход к отладке узла.JS код, который является стабильным и предельно проста. Он доступен по адресу https://github.com/s-a/iron-node.
кросс-платформенный визуальный отладчик с открытым исходным кодом.
установка:
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 Code будет работать для нас в отладке.
Я собрал короткий узел.JS debugging primer С помощью узел-инспектор для тех, кто не уверен, с чего начать.
Если вам нужна мощная библиотека журналов для узла.js, трассировщик https://github.com/baryon/tracer это лучший выбор.
Он выводит сообщения журнала с меткой времени, именем файла, именем метода, номером строки, путем или стеком вызовов, консолью цвета поддержки и базой данных поддержки, файлом, потоковым транспортом легко. Я автор.
предполагая, что на вашем компьютере установлен node-inspector (если нет, просто введите "npm install-g node-inspector"), вам просто нужно запустить:
node-inspector & node --debug-brk scriptFileName.jsи вставьте URI из командной строки в браузер WebKit (Chrome / Safari).
просто для полноты:
The Узел PyCharm 3.0+.JS плагин предлагает удивительный опыт разработки + запуска + отладки.
Использовать 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 for Java).
Nodeclipse-это бесплатное программное обеспечение с открытым исходным кодом выпущен в начале каждого месяца.
Использование Chrome Версии 67.0.3396.62 (+)
- запустить приложение узла
узел -- inspect-brk=0.0.0.0: 9229 сервер.js (имя файла сервера js)
- просмотрите свое приложение в chrome, например "localhost: port"
- Откройте DevTools.
- щелкните значок узла рядом со значком отзывчивого устройства.
появится еще одно окно DevTools, которое появится специально для отладки узла приложения.
IntelliJ прекрасно работает для узла.js.
кроме того, IntelliJ хорошо поддерживает "помощь в коде".
есть много возможностей...
- узел включает в себя отладку утилиты
- узел-инспектор
- редакторы кода / IDE (см. инструкции по отладке для одного из следующих)
поддержка отладки часто реализовано с помощью протокол отладки v8 или новее Протокол Отладки Chrome.
быстрый и грязный способ отладки небольшого узла.js скрипты с вашим любимым отладчик браузера можно использовать browserify. Обратите внимание, что этот подход не работает с любыми приложениями, которые требуют собственных библиотек ввода-вывода, но он достаточно хорош для большинства небольших сценариев.
$ npm install -g browserifyТеперь переместите все ваши
var x = requires('x')вызовы в и$ browserify requires.js -s window -o bundle.js(недостатком здесь является то, что вы либо должны двигаться или комментировать
requiresin все ваши файлы.)включить
bundle.jsв HTML-файле вот так:<script type="text/javascript" src="bundle.js"></script>теперь загрузите файл в браузер и нажмите F12 и viola: отладка в браузере.
The NetBeans IDE имеет узел.поддержка js с версия 8.1:
<...>
Новые Функции Основные Моменты
узел.разработка приложений js
- Новый Узел.JS project wizard
- Новый Узел.JS Express wizard
- Расширенный Редактор JavaScript
- новая поддержка запущенного узла.приложения на JS
- новая поддержка для узел отладки.приложения на JS.
<...>
Дополнительные ссылки:
Я хотел бы использовать хороший от Walmart Labs. Он будет делать свою работу, и это очень гибкий:
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'); } });








Comments