it-swarm.com.ru

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

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

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

101
JuanO

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

node-debug $(which grunt) task

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

Изменить 28 февраля 2014

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

Изменить 30 января 2015

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

135
David Souther

Решение для Windows

Бежать 

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

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

39
Eugene Gluhotorenko

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

#!/usr/bin/env node

К

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

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

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

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

7
user1577390

Недавно я создал grunt-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

6
ChrisWren

Я выполнил задачу, чтобы запустить мое приложение и запустить инспектор узлов. Это намного лучше, чем текущее предложение, вам просто нужно добавить эту задачу в 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');
    });
4
olivier dufour

Отличные ответы здесь. В 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.

3
RoccoB

Обновление 2019 года  

  • Если вы хотите запустить задачу grunt в режиме отладки и прервать работу на первой строке:

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

  • Если вы хотите запустить задачу grunt в режиме отладки на определенном порту:

    node --inspect-brk=8080 $(which grunt) taskName

  • если вы хотите присоединить VSCODE к процессу узла, выполняющему сеанс отладки grunt, используйте следующую конфигурацию в vscode:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [

    {
      "type": "node",
      "request": "attach",
      "name": "Attach by port IP 5656",
      "port": 8080
    }
  ]
}

0
Ze Rubeus