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


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

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

6 101

6 ответов:

чтобы запустить grunt в debug, вам нужно передать сценарий grunt в узел явно:

node-debug $(which grunt) task

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

Редактировать 28 Февраля 2014

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

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

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

решение для Windows

выполнить

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

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

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

#!/usr/bin/env node

до

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

--debug-brk сломается на первой строке javascript ran.

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

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

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

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

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

  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');
    });

большие ответы здесь. в 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, и вы хорошо идти!

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