Использование node -инспектор с задачами Grunt

Кто-то использовал node-inspector с Grunt для отладки приложений? Если нет, можете ли вы порекомендовать инструмент отладки для приложений на основе Grunt?

Я работаю с nodejs для приложения на стороне сервера, и у меня Grunt для использования разделенных задач (это связано с тем, что пользователи могут выполнять задачи отдельно).

Ответ 1

Чтобы запустить grunt при отладке, вы должны явно передать grunt script в node:

node-debug $(which grunt) task

и поместите строку debugger; в свою задачу. node-inspector откроет браузер с инструментами отладки.

Редактировать 28.02.2014

node-inspector добавила команду node-debug, которая запускает node в состоянии --debug и открывает браузер на странице node-inspector, останавливаясь, когда она попадает в первую строку debugger или устанавливает точку останова.

Редактировать 30 января 2015 г.

В Windows все сложнее. См. Ответ от @e.gluhotorenko для получения инструкций.

Ответ 2

Решение для Windows

Запустить

node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname

из cmd в каталоге с помощью Gruntfile.js. Не забудьте поставить строку debugger; в нужные места.

Ответ 3

Чтобы отлаживать, мы должны изменить файл grunt в bin. На моей машине grunt установлен глобально, поэтому я пошел в /usr/local/lib/ node_modules/grunt/bin Я открыл файл и изменил его:

#!/usr/bin/env node

Для

#!/usr/bin/env node --debug-brk

- debug-brk будет разбиваться на первую строку запуска javascript.

Выполнение этого само по себе недостаточно, так как вы не сможете найти файл js task grunt task в выпадающем списке в инспекторе node, поэтому вам нужно изменить интересующий вас файл в отладке, добавив debugger;, где вы хотите, чтобы точка останова произошла. Теперь вы можете нажать "продолжить" после первого перерыва, и вы сломаетесь, вы debugger; line

Довольно kludgy, но это единственный способ, который я нашел до сих пор.

Ответ 4

Недавно я создал grunt- node -инспектор, который легко конфигурировал node -инспектор с остальной частью вашего рабочего процесса, проверьте его: https://github.com/ChrisWren/grunt-node-inspector

Вот раздел файла Grunt, который показывает, как вы можете отлаживать задачу grunt с помощью grunt- node -инспектор, grunt-concurrent и grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile.js#L44-L77

Ответ 5

Я выполнил задачу для запуска моего приложения и запускает node -инспектор. Это намного лучше, чем текущее предложение, вам просто нужно добавить эту задачу в файл grunt:

  grunt.registerTask('debug', 'My debug task.', function() {
        var done = this.async();
        grunt.util.spawn({
            cmd: 'node',
            args: ['--debug', 'app.js'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('node started');
        grunt.util.spawn({
            cmd: 'node-inspector',
            args: ['&'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('inspector started');
    });

Ответ 6

Отличные ответы здесь. В 2017 году теперь вы можете сделать

node --inspect --debug-brk $(which grunt) taskName

Что печатает что-то вроде.

To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471

Откройте этот URL-адрес в chrome, и вам будет хорошо!

Я использую Node 7.3.0, и я нахожусь на Mac. Возможно, вам придется следовать некоторым советам в других сообщениях, чтобы заставить их работать в Windows.