Как отладить Gruntfile с точками останова с помощью node-inspector, Windows 7?

StackOverflow https://stackoverflow.com//questions/24001043

Вопрос

Итак, я потратил последние пару дней, безуспешно пытаясь заставить это работать.Большинство решений, которые я нашел, похоже, работают "нормально" для отладки узловых приложений.Но мне не очень повезло с отладкой grunt stand в одиночку.Я хотел бы иметь возможность устанавливать точки останова в моем gruntfile и выполнять пошаговое выполнение кода либо с помощью браузера, либо с помощью IDE.

Я попробовал следующее:

СООБЩЕНИЕ ОБ ОШИБКЕ ПРИ ИСПОЛЬЗОВАНИИ NODE-INSPECTOR

enter image description here

Так что в настоящее время node-inspector чувствует, что это приблизило меня к тому, чего я хочу.Чтобы попасть сюда, я сделал следующее:

Из моего каталога grunt я запустил следующие команды:

grunt node-inspector
node --debug-brk Gruntfile.js

А потом оттуда я отправился в localhost:8080/debug?port=5858 для отладки моего Gruntfile.js.Но, как я упоминал выше, как только я нажимаю клавишу F8, чтобы перейти к точке останова, происходит сбой с вышеуказанной ошибкой.Имел ли кто-нибудь какой-либо успех, используя этот метод, чтобы попытаться отладить Gruntfile?До сих пор, несмотря на мои поисковые усилия, я не нашел очень хорошо документированного способа сделать это.Так что, надеюсь, это будет полезная информация для будущих пользователей.Также я использую Windows 7 кстати.Заранее спасибо.

ОБНОВЛЕНИЕ:

Я попробовал следующее, предложенное @dylants, но пока безуспешно.

  1. Найден файл grunt.cmd на компьютере с Windows, расположенный в C:\Users\khollenbeck\AppData\Roaming\npm.Открылся grunt.cmd файл и обнаружил следующее....

    enter image description here

  2. Это привело меня к C:\Users\khollenbeck\AppData\Roaming\npm\node_modules\grunt-cli\bin который содержал файл с именем grunt.И оттуда в верхней части файла.Я изменил этот код #!/usr/bin/env node к #!/usr/bin/env node --debug-brk

  3. После выполнения этой команды node-inspector C:\path\to\gruntfile grunt Я получил следующее.

    Node Inspector v0.7.3 Visit http://localhost:8080/debug?port=5858 to start debugging

  4. Затем я запустил программу grunt команда от grunt реж.(оставляя сервер запущенным в исходной командной строке)

Отсюда я ожидал, что Gruntfile.js появится в исходном коде chrome dev tools.Я также ожидал, что оттуда смогу устанавливать точки останова.Этого не произошло.Вместо этого он просто прошел весь путь через Gruntfile, не прерываясь и не загружаясь в браузере.

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

Ах, я вижу, что я сделал не так.По какой-то причине я выполнил node --debug-brk без добавления пути C:\Users\khollenbeck\AppData oaming pm ode_modules\grunt-cli\bin\grunt.Теперь это работает, большое спасибо.Я приношу извинения за то, что так долго тянул с этим.Но, надеюсь, это будет полезно другим пользователям Windows в будущем.

Это было полезно?

Решение

Этого можно достичь, запустив node-inspector и начиная grunt в режиме отладки.Как только это будет сделано, вы сможете пройти через свой Gruntfile.js в Chrome, как обычно.

запустить узел-инспектор

Если у вас еще нет node-inspector, установите его с помощью npm install -g node-inspector.Затем запустите его в одном терминале / командной строке:

$ node-inspector
Node Inspector v0.7.3
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

запустите grunt в режиме отладки

Затем найдите свой grunt скрипт.Это файл JavaScript, который выполняется при запуске программы grunt команда из командной строки.Если вы установили grunt глобально (используя npm install -g grunt-cli) тогда это, скорее всего, будет в /usr/bin или /usr/local/bin для компьютеров *nix или Mac.Для компьютеров с ОС Windows, grunt.cmd файл указывает на то, где находится grunt скрипт найден.Скорее всего, grunt скрипт находится в C:\Users\<username>\AppData\Roaming\npm\node_modules\grunt-cli\bin.

Как только вы найдете местоположение скрипта, используйте node --debug-brk чтобы выполнить этот скрипт, запустите, таким образом, grunt в режиме отладки, остановившись на первой строке кода в файле.Так, например, представьте, что скрипт grunt находится по адресу /usr/bin/grunt:

$ node --debug-brk /usr/bin/grunt 
debugger listening on port 5858

Вы поймете, что добились успеха, когда увидите debugger listening on port 5858 в качестве выходных данных, что означает, что скрипт grunt приостановил выполнение и ожидает выполнения с помощью отладчика.

отладка с помощью Chrome

Теперь откройте Chrome и наведите его на http://127.0.0.1:8080/debug?port=5858.В Chrome откройте и добавьте точки останова в свой Gruntfile.js, и пройдите через это, как вы обычно делали бы.

Другие советы

Чтобы запустить node-inspector, вам больше не следует передавать флаг --debug или --debug-brk.Вы можете запустить его непосредственно с помощью node-inspector и путь к файлу, точно так же, как вы обычно запускаете скрипт, используя node команда.Это должно автоматически открыть webkit inspector в chrome и приостановить выполнение на первой строке.Отсюда вы можете вставить свои точки останова и выполнять отладку в обычном режиме.

Как упоминалось выше, для отладки задачи grunt вам нужно будет найти свой исполняемый файл Grunt с помощью $ which grunt в Mac, не уверен насчет Windows.Затем вам нужно было бы скопировать этот путь и использовать его в качестве первого аргумента, передаваемого node-debug, причем вторым аргументом является задача (и вы также могли бы включить цель grunt, если необходимо).Так, например, это может выглядеть следующим образом:

node-debug /usr/local/bin/grunt concat:dev

и отсюда вы могли бы отладить любой файл, который будет выполнен для задачи concat.Это включает в себя зависимости grunt-concat, которые были бы в его локальных node_modules.Поскольку мне показалось раздражающим копировать и вставлять путь к моему исполняемому файлу, я создал самый простой Node cli, чтобы абстрагироваться от этого https://github.com/dtothefp/node-build-debug.Если вы установите это глобально (и, конечно, установите node-inspector глобально), вы можете:

$ build-debug grunt concat:dev

В более новых версиях Node (я думаю, начиная с 6.3) есть встроенный отладчик / инспектор:

https://nodejs.org/en/docs/inspector/

Просто запустите свое приложение Grunt следующим образом (в Windows):

node --inspect %APPDATA%\npm\node_modules\grunt-cli\bin\grunt

Если вы установите расширение Chrome Менеджер инспектора узлов, инструменты разработки откроются автоматически.

В противном случае вы можете открыть chrome://inspect и подключитесь к сеансу отладки вручную.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top