Использование node -инспектор с задачами Grunt
Кто-то использовал node-inspector с Grunt для отладки приложений? Если нет, можете ли вы порекомендовать инструмент отладки для приложений на основе Grunt?
Я работаю с nodejs для приложения на стороне сервера, и у меня Grunt для использования разделенных задач (это связано с тем, что пользователи могут выполнять задачи отдельно).
Ответы
Ответ 1
Чтобы запустить grunt при отладке, вы должны явно передать grunt script в node:
node-debug $(which grunt) task
и поместите строку debugger;
в свою задачу. node-inspector
откроет браузер с инструментами отладки.
Редактировать 28.02.2014
node-inspector
добавила команду node-debug
, которая запускает node в состоянии --debug
и открывает браузер на странице node-inspector
, останавливаясь, когда она попадает в первую строку debugger
или устанавливает точку останова.
Редактировать 30 января 2015 г.
В Windows все сложнее. См. Ответ от @e.gluhotorenko для получения инструкций.
Ответ 2
Решение для Windows
Запустить
node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname
из cmd в каталоге с помощью Gruntfile.js
. Не забудьте поставить строку debugger;
в нужные места.
Ответ 3
Чтобы отлаживать, мы должны изменить файл grunt в bin. На моей машине grunt установлен глобально, поэтому я пошел в /usr/local/lib/ node_modules/grunt/bin
Я открыл файл и изменил его:
#!/usr/bin/env node
Для
#!/usr/bin/env node --debug-brk
- debug-brk будет разбиваться на первую строку запуска javascript.
Выполнение этого само по себе недостаточно, так как вы не сможете найти файл js task grunt task в выпадающем списке в инспекторе node, поэтому вам нужно изменить интересующий вас файл в отладке, добавив debugger;
, где вы хотите, чтобы точка останова произошла.
Теперь вы можете нажать "продолжить" после первого перерыва, и вы сломаетесь, вы debugger;
line
Довольно kludgy, но это единственный способ, который я нашел до сих пор.
Ответ 4
Недавно я создал grunt- node -инспектор, который легко конфигурировал node -инспектор с остальной частью вашего рабочего процесса, проверьте его: https://github.com/ChrisWren/grunt-node-inspector
Вот раздел файла Grunt, который показывает, как вы можете отлаживать задачу grunt с помощью grunt- node -инспектор, grunt-concurrent и grunt-shell: https://github.com/CabinJS/Cabin/blob/master/Gruntfile.js#L44-L77
Ответ 5
Я выполнил задачу для запуска моего приложения и запускает node -инспектор.
Это намного лучше, чем текущее предложение, вам просто нужно добавить эту задачу в файл grunt:
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');
});
Ответ 6
Отличные ответы здесь. В 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.