#javascript #node.js #debugging #gulp
#javascript #node.js #отладка #gulp
Вопрос:
Как мне отладить задачу gulp, определенную в my gulpfile.js
, с помощью отладчика, такого как отладчик Google Chrome, пошагово просматривая код задачи построчно?
Ответ №1:
С Node.js версия 6.3 вы можете использовать этот --inspect
флаг при выполнении своей задачи.
Для отладки задачи gulp с именем css
:
- Узнайте, где находится ваш исполняемый файл gulp. Если gulp установлен локально, это будет at
node_modules/.bin/gulp
. Если gulp установлен глобально, запуститеwhich gulp
(Linux / Mac) илиwhere gulp
(Windows) в терминале, чтобы найти его. - Запустите одну из этих команд в соответствии с вашей версией Node.js . При необходимости
./node_modules/.bin/gulp
замените путь к вашей установке gulp с шага 1.- Node.js 6.3 :
node --inspect --debug-brk ./node_modules/.bin/gulp css
- Node.js 7 :
node --inspect-brk ./node_modules/.bin/gulp css
- Node.js 6.3 :
- Используйте Chrome для просмотра
chrome://inspect
.
The --debug-brk
(Node.js 6.3 ) и --inspect-brk
(Node.js 7 ) флаги используются для приостановки выполнения кода в первой строке кода вашей задачи. Это дает вам возможность открыть отладчик Chrome и установить точки останова до завершения задачи.
Если вы не хотите, чтобы отладчик останавливался на первой строке кода, просто используйте --inspect
флаг.
Вы также можете установить Node.js Расширение Inspector Manager (NIM) для Chrome, помогающее выполнить шаг 3. Это автоматически откроет вкладку Chrome с готовым к работе отладчиком в качестве альтернативы ручному переходу по URL-адресу.
Комментарии:
1. После загрузки добавьте точку останова в gulp.js после
require(env.configPath);
этого загружается ваш файл gulp, чтобы вы могли найти его в исходных текстах и добавить точки останова.2. Просто перейдите к
chrome://inspect
, вам не нужно знать адрес devtools3. В более новых версиях node now флаги узлов были объединены в просто
--inspect-brk
4. Мне пришлось использовать
./node_modules/gulp/bin/gulp.js
вместо./node_modules/.bin/gulp
5. Другой способ установки точек останова (помимо @TrueWill): используйте Add folder to workspace на вкладке Sources , теперь вы можете выбрать любой файл, в котором определена ваша задача, а затем установить точки останова по своему усмотрению.
Ответ №2:
Для всех, кто использует VS Code 1.10
- Откройте панель отладки.
- Нажмите на значок настроек.
- Нажмите на кнопку Добавить конфигурацию.
- Выберите Node.js : Задача глотка.
Вот как должен выглядеть ваш файл launch.json.
{
// 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": "launch",
"name": "Gulp task",
"program": "${workspaceFolder}/node_modules/gulp/bin/gulp.js",
"args": [
"yourGulpTaskName"
]
}
]
}
Комментарии:
1. Спасибо за этот пример!
2. При использовании VS Code для добавления новой конфигурации сборки возникает Node.js : Шаблон задачи Gulp вы можете выбрать сами. Он вставит новую конфигурацию, которая выглядит как приведенный выше код. Нет необходимости копировать и вставлять 🙂
3. хорошо, так что это конфигурация — но как я могу начать с отладки?
4. Я не знаю почему, но при такой конфигурации я не могу установить точки останова. Вместо этого сработал метод добавления
console.log(...)
операторов в мой код.5. Возможно, это было связано с тем фактом, что мой файл Gulf был назван
Gulpfile.js
, потому что я переименовал егоgulpfile.js
, и теперь срабатывают точки останова (я на Windows с VS Code 1.45.1).
Ответ №3:
Если вы используете webstorm, вы можете щелкнуть правой кнопкой мыши задачу на панели gulp и выбрать debug.
Ответ №4:
Спасибо пользователю 2943490, в Windows я обнаружил, что эта версия работает для меня:
node --inspect --debug-brk ./node_modules/gulp/bin/gulp.js --verbose
Комментарии:
1. спасибо, таргетинг./node_modules/gulp/bin/gulp.js помог мне выбраться
Ответ №5:
Если вы используете gulp-nodemon, вы можете сделать это в своем gulpfile. Просто передайте ему опцию execMap:
gulp.task('default', function() {
nodemon({
script: 'server.js',
ext: 'js',
execMap: {
js: "node --inspect"
}
})
}
Надеюсь, это поможет.
Ответ №6:
Версия (node v8.11.3, npm 6.2.0, gulp 3.9.1)
Windows 10 и git bash
Установить Node.js V8 — диспетчер инспекторов (NiM) и настройка по вашему усмотрению
Попробуйте это:
node --inspect-brk ./node_modules/gulp/bin/gulp.js --verbose
Ответ №7:
Мне понравился ответ @Avi Y. но я полагаю, что люди оценили бы более полный сценарий :
gulp.task('nodemon', ['sass'], function(cb) {
var started = false;
consoleLog('nodemon started');
return nodemon({
//HERE REMOVE THE COMMENT AT THE BEGINING OF THE LINE YOU NEED
//exec: 'node --inspect --debug-brk node_modules/gulp/bin/gulp.js',
exec: 'node --inspect --debug-brk',
//exec: 'node --inspect',
script: path.server,
ignore: ['*/gulpfile.js', 'node_modules/*'],
verbose: true
}).on('start', function() {
if (!started) {
cb();
started = true;
}
}).on('restart', function() {
consoleLog('nodemon restarted the server');
});});