Как отлаживать приложения Node.js? - PullRequest
1501 голосов
/ 16 декабря 2009

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

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

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

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

Ответы [ 35 ]

2 голосов
/ 07 мая 2014
node-debug -p 8888 scriptFileName.js
1 голос
/ 20 сентября 2018

Вы можете использовать чистый Node.js и отлаживать приложение в консоли, если хотите.

Например, давайте создадим фиктивный файл 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, браузер). Вы можете прочитать больше здесь .

1 голос
/ 12 марта 2014

Мой оригинальный ответ был пару лет назад до визуальной студии.

Итак, использование GOOD от hapi - отличный пакет для ведения журнала, но для отладки используйте visual studio .

оригинальный ответ (давным-давно): Я бы использовал ХОРОШО от 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');
    }
});
0 голосов
/ 21 января 2019

Инструменты Chrome для разработчиков - это простой способ начать отладку кода на стороне клиента. Вот шаги для отладки приложения узла с помощью инструментов разработчика Chrome. проверьте подробности здесь

DEBUG NODE APP USING CHROME DEV TOOLS

0 голосов
/ 05 апреля 2018

Существует несколько способов отладки приложения Node.JS:

1) Установите devtool и запустите приложение вместе с ним

npm install devtool -g --save
devtool server.js

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

2) отладка с помощью узла-инспектора

node-inspector

3) отладка с помощью --debug

node --debug app.js 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...