Кто-нибудь использовал инспектор узлов с Grunt для отладки приложений? Если нет, можете ли вы порекомендовать инструмент отладки для приложений на основе Grunt?
Я работаю с nodejs для приложения на стороне сервера, и у меня есть Grunt для использования разделенных задач (это потому, что пользователи могут выполнять задачи отдельно).
node-inspector
которым общаетсяnode --debug
, предоставляя отладочную информацию браузеру, который подключается. Это замечательно, потому что вы можете подключить Chrome к процессу инспектора узлов и использовать все инструменты веб-инспектора для отладки приложения. github.com/dannycoates/node-inspectorОтветы:
Чтобы запустить grunt в отладке, вам нужно явно передать скрипт grunt в узел:
и поставьте
debugger;
строку в своей задаче.node-inspector
затем откроет браузер с инструментами отладки.Редактировать 28 февраля 2014 г.
node-inspector
добавил командуnode-debug
, которая запускает узел в--debug
состоянии и открывает браузер наnode-inspector
странице, останавливаясь, когда он достигает первойdebugger
строки или устанавливает точку останова.Редактировать 30 января 2015 г.
В Windows дела обстоят немного сложнее. Инструкции см. В ответе @gluhotorenko.
источник
$(which grunt)
такое? Я хочу отладить только Gruntfile.js? А дляtask
чего ставить (serve
на примере)grunt serve
или простоserve
? Я пробовалnode-debug Gruntfile.js serve
и многое другое, но я просто не могу заставить это работать. Node-Inspector открывается, и он прерывается на первой строке, но я не могу взломатьserve
задачу, даже если я поставилdebugger;
строку в качестве первой строки функции.grunt.js
скрипту grunt-cli . Это сценарий, который фактически запускает Grunt. Если вы работаете в Windows, посмотрите на stackoverflow.com/a/13443026/240358 (ответ ниже) возможное расположение скрипта grunt-cli. Это займет местоgrunt
в вашей команде - в вашем примере заменитеtask
наserve
Решение для Windows
Бегать
из cmd в каталог с вашим
Gruntfile.js
. Не забудьте поставитьdebugger;
леску в необходимых местах.источник
grunt-cli
пакета:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
Для отладки нам нужно изменить файл 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;
строкеДовольно глупо, но пока что я нашел единственный способ.
источник
Недавно я создал 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
источник
node --debug-brk $(which grunt) node-inspector build test
то вроде бега ? Мне нравится это.node-inspector
что не могу выйти и разрешитьbuild
иtest
запустить, поскольку он работает вечно. Я добавил ссылку на фрагмент, где он настроен.node-inspector &
, оставить его в фоновом режиме и назвать его выполненным. Есть ли у вас какие-либо мысли по этому поводу?grunt node-inspector
а затем перехожу к URL-адресу localhost и не вижу исходных файлов. Просто пустые инструменты отладчика.grunt node-inspector
иnode --debug-brk Gruntfile.js
из моего каталога grunt. Однако, когда я устанавливаю точку останова в файле grunt, он просто вылетает с ошибкой соединения.Я выполнил задачу запустить свое приложение и запустить инспектор узлов. Это намного лучше, чем текущее предложение, вам просто нужно добавить эту задачу в gruntfile:
источник
Отличные ответы здесь. В 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.
источник
Обновление 2019
Если вы хотите запустить задачу grunt в режиме отладки и прервать первую строку:
node --inspect-brk $(which grunt) taskName
Если вы хотите запустить задачу grunt в режиме отладки на определенном порту:
node --inspect-brk=8080 $(which grunt) taskName
если вы хотите подключить VSCODE к процессу узла, выполняющему сеанс отладки grunt, используйте следующую конфигурацию в vscode:
источник