Использование node-inspector с задачами Grunt
кто-нибудь использовать узел-инспектор С грунт для отладки приложения? Если нет, можете ли вы порекомендовать инструмент отладки для приложений на основе Grunt?
Я работаю с nodejs для серверного приложения и у меня есть грунт использовать отдельные задачи (это потому, что пользователи могут выполнять задачи отдельно).
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.