Как отлаживать серверное приложение Node.js?
В настоящее время я в основном использую отладочную информацию с инструкциями печати следующим образом:
sys.puts(sys.inspect(someVariable));
Должен быть лучший способ отладки. Я знаю, что Google Chrome имеет отладчик командной строки. Этот отладчик доступен и для Node.js?
Отладчик V8, выпущенный как часть инструментов разработчика Google Chrome, может использоваться для отладки сценариев Node.js. Подробное объяснение того, как это работает, можно найти в вики Node.js GitHub.
node-inspector может спасти день! Используйте его из любого браузера, поддерживающего WebSocket. Точки останова, профилировщик, livecoding и т.д. Это действительно потрясающе.
Установите его с помощью:
npm install -g node-inspector
Затем запустите:
node-debug app.js
node --prof ./app.js
node --prof-process ./the-generated-log-file
Библиотеки, выводящие информацию об отладке
Библиотеки, которые улучшают информацию трассировки стека
ab -n 100000 -c 1 http://127.0.0.1:9778/
Эти функции работают, но больше не поддерживаются или больше не применимы к современным версиям node.
look
, как указано в stackoverflow.com/questions/12864221/nodejs-memory -profiling
Просто передайте флаг инспектора, и вам будет предоставлен 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
Node.js версия 0.3.4+ имеет встроенную поддержку отладки.
node debug script.js
Вручную: http://nodejs.org/api/debugger.html
Код Visual Studio будет моим выбором для отладки. Нет накладных расходов на установку каких-либо инструментов или npm install
.
Просто установите начальную точку вашего приложения в package.json и VSCode автоматически создаст файл конфигурации внутри вашего решения. Он основан на Electron, на котором построены редакторы, такие как Atom.
Код VS дает аналогичный отладочный опыт, как вы могли бы в других IDE, таких как VS, Eclipse и т.д.
Я лично использую JetBrains WebStorm, так как это единственная JavaScript IDE, которую я нашел, которая отлично подходит как для внешнего интерфейса, так и для бэкэнд-кода JavaScript.
Он работает на нескольких ОС и имеет Node.js отладочную встроенную (а также тонну других вещей) (http://www.jetbrains.com/webstorm/features/index.html).
Мои единственные элементы "вопросов/пожеланий" - были:
Theseus - это проект исследования Adobe, который позволяет отлаживать ваш код Node.js в редакторе Open Source Brackets. Он имеет некоторые интересные функции, такие как покрытие кода в реальном времени, ретроактивное обследование, асинхронное дерево вызовов.
Здесь много замечательных ответов, но я хотел бы добавить свое мнение (исходя из того, как мой подход развился)
Посмотрим правде в глаза, мы все любим хороший console.log('Uh oh, if you reached here, you better run.')
, и иногда это отлично работает, поэтому, если вы не согласны с тем, чтобы двигаться слишком далеко от него, по крайней мере, добавьте bling в свои журналы с помощью Отладка Visionmedia.
Так же удобно, как ведение журнала консоли, чтобы отлаживать профессионально, вам нужно засучить рукава и застрять. Установите точки останова, выполните свой код, просмотрите области и переменные, чтобы узнать, что вызывает это странное поведение. Как отмечали другие, node-inspector действительно является пчелиными колени. Он делает все, что вы можете сделать со встроенным отладчиком, но используя этот знакомый интерфейс Chrome DevTools. Если, как и я, вы используете Webstorm, тогда здесь является удобным руководством для отладки оттуда.
По умолчанию мы не можем проследить ряд операций в разных циклах цикла событий (тики). Чтобы обойти это, посмотрите longjohn (но не на производстве!).
С Node.js мы можем ожидать, что серверный процесс будет оставаться на значительное время. Что вы делаете, если думаете, что это вызвало некоторые неприятные утечки? Используйте heapdump и Chrome DevTools, чтобы сравнить некоторые снимки и посмотреть, что меняется.
Для некоторых полезных статей ознакомьтесь с
Если вам нравится смотреть видео (ы), то
Какой бы путь вы ни выбрали, просто убедитесь, что вы понимаете, как вы отлаживаете
Это болезненная вещь
Чтобы посмотреть на свои проблемы и узнать Что вы сами и никто другой не сделал этоСофокл, Аякс
Код Visual Studio имеет действительно приятную Node.js поддержку отладки. Он бесплатный, с открытым исходным кодом и кросс-платформенный и работает на Linux, OS X и Windows.
Вы даже можете отлаживать grunt и gulp задачи, если вам нужно...
Node.js Инструменты для Visual Studio 2012 или 2013 включает отладчик. В обзоре здесь говорится: "Node.js Инструменты для Visual Studio включают полную поддержку отладки node приложений". Будучи новичком в Node.js, но имея фон в .NET, я нашел, что это добавление является отличным способом отладки приложений Node.js.
Я написал другой подход для отладки Node.js-кода, который является стабильным и чрезвычайно простым. Он доступен в https://github.com/s-a/iron-node.
Открытый межсетевой визуальный отладчик с открытым исходным кодом.
Установка:
npm install iron-node -g;
Debug:
iron-node yourscript.js;
Если вы используете Atom IDE, вы можете установить пакет node-debugger
.
Я создал аккуратный маленький инструмент под названием 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()
Использование Chrome версии 67.0.3396.62 (+)
узел --inspect-brk = 0.0.0.0: 9229 server.js (имя файла сервера js)
Будет другое окно DevTools, которое будет появляться специально для отладки приложения узла.
Visual Studio Code будет работать для нас при отладке.
В Node.js есть встроенная командная строка клиент отладчика. Cloud 9 IDE также довольно приятный (визуальный) debugger.
Я собрал короткий Node.js отладочный праймер с помощью node-inspector для тех, кто не уверен, с чего начать.
Запустите процесс узла с помощью флага --inspect.
node --inspect index.js
а затем "Открыть chrome://inspect
в хроме". Нажмите ссылку "Открыть выделенный DevTools для узла" или установите это расширение хром для быстрого открытия хром DevTools.
Для получения дополнительной информации обратитесь к этой ссылке
Использовать Webstorm! Он идеально подходит для отладки приложений Node.js. Он имеет встроенный отладчик. Ознакомьтесь с документами здесь: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
Только для полноты:
PyCharm 3.0 + Node.js Плагин предлагает потрясающий опыт разработки + запуска + отладки.
Предполагая, что на вашем компьютере установлен node -инспектор (если нет, просто введите "npm install -g node-inspector" ), вам просто нужно запустить:
node-inspector & node --debug-brk scriptFileName.js
И вставьте URI из командной строки в браузер WebKit (Chrome/Safari).
Если вам нужна мощная библиотека регистрации для Node.js, Tracer https://github.com/baryon/tracer - лучший выбор.
Он выводит сообщения журнала с меткой времени, именем файла, именем метода, номером строки, стеком путей или вызовов, поддержкой цветовой консоли и поддержкой базы данных, файла, потока транспорта. Я автор.
Существует новый проект Nodeclipse (в качестве плагина Eclipse или Enide Studio):
http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png
Nodeclipse стал # 1 в Eclipse Top 10 NEW Plugins для 2013. Он использует измененный отладчик V8 (из инструментов разработчика Google Chrome для Java).
Nodeclipse - бесплатное программное обеспечение с открытым исходным кодом выпущено в начале каждого месяца.
Есть много возможностей...
Поддержка отладки часто реализуется с помощью v8 протокола отладки или более нового Протокол отладки Chrome.
IntelliJ прекрасно работает для Node.js.
Кроме того, IntelliJ хорошо поддерживает "Code Assistance".
NetBeans У IDE была поддержка Node.js, поскольку версия 8.1:
<... >
Основные особенности функции
Node.js Разработка приложений
- Новый мастер проекта Node.js
- Новый Node.js Экспресс-мастер
- Расширенный редактор JavaScript
- Новая поддержка для запуска приложений Node.js
- Новая поддержка отладки приложений Node.js.
<... >
Дополнительные ссылки:
Быстрый и грязный способ отладки небольших сценариев 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 и альт: отлаживайте в браузере.
Используйте эти команды
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
node-debug -p 8888 scriptFileName.js
Вы можете использовать чистый Node.js и отлаживать приложение на консоли, если хотите.
Например, создайте файл dummy debug.js
который мы хотим отлаживать и помещать в него контрольные точки (инструкция debugger
):
let a = 5;
debugger;
a *= 2;
debugger;
let b = 10;
debugger;
let c = a + b;
debugger;
console.log(c);
Затем вы можете запустить этот файл для отладки с помощью команды inspect
:
node inspect debug.js
Это запустит отладчик в консоли, и вы увидите результат, похожий на:
< Debugger listening on ws://127.0.0.1:9229/6da25f21-63a0-480d-b128-83a792b516fc
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
2 debugger;
3
Вы можете заметить здесь, что выполнение файла было остановлено на первой строке. С этого момента вы можете пройти через файл шаг за шагом, используя следующие команды (горячие клавиши):
cont
продолжения,next
с переходом к следующей точке останова,in
к шагу в,out
выйтиpause
чтобы приостановить его Пусть тип cont
несколько раз и посмотрим, как мы получаем от точки останова до точки останова:
debug> next
break in misc/debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
2 debugger;
3
debug> next
break in misc/debug.js:2
1 (function (exports, require, module, __filename, __dirname) { let a = 5;
> 2 debugger;
3
4 a *= 2;
debug> next
break in misc/debug.js:4
2 debugger;
3
> 4 a *= 2;
5 debugger;
6
Теперь мы можем проверить значения переменных в этой точке, написав команду repl
. Это позволит вам написать имя переменной и увидеть ее значение:
debug> repl
Press Ctrl + C to leave debug repl
> a
5
> b
undefined
> c
undefined
>
Вы можете видеть, что в настоящий момент мы имеем a = 5
а b
и c
не определены.
Конечно, для более сложной отладки вы можете использовать некоторые внешние инструменты (IDE, браузер). Вы можете прочитать здесь больше.
Мой оригинальный ответ был пару лет назад предварительно визуальной студии.
Итак, использование GOOD by hapi - отличный пакет для ведения журналов, но для отладки используйте visual studio.
оригинальный ответ (давным-давно): я бы использовал GOOD от 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');
}
});
Инструменты Chrome для разработчиков - это простой способ начать отладку кода на стороне клиента. Вот шаги для отладки приложения узла с помощью инструментов разработчика Chrome. проверьте подробности здесь
ndb - это улучшенная отладка для Node.js, включенная Chrome DevTools
Существуют способы отладки приложения Node.JS следующим образом:
1) Установите devtool и запустите приложение с ним
npm install devtool -g --save
devtool server.js
это откроется в режиме разработки Chrome, чтобы вы могли поставить точку отладки и проверить.
2) отладка с узлом-инспектором
node-inspector
3) отладка с --debug
node --debug app.js