npm - 167throw - Gulp error: events.js: 72
events.js:183 throw er;// unhandled ''error'' event (1)
He estado probando (o intentando trabajar) una guía de estilo jekyll de: https://github.com/davidhund/jekyll-styleguide#user-content-requirements
Mi gulpfile es:
var gulp = require(''gulp'');
var sass = require(''gulp-ruby-sass'');
var autoprefixer = require(''gulp-autoprefixer'');
var browserSync = require(''browser-sync'');
var rename = require(''gulp-rename'');
var concat = require(''gulp-concat'');
var minifycss = require(''gulp-minify-css'');
var uglify = require(''gulp-uglify'');
var clean = require(''gulp-clean'');
var notify = require(''gulp-notify'');
var plumber = require(''gulp-plumber'');
// Handy file paths
paths = {
scss: "./static/scss/",
css: "./static/css/",
img: "./static/img/",
js: "./static/js/"
}
// SASS
gulp.task(''sass'', function() {
// Be specific in what file to process
return gulp.src(paths.scss+''app.scss'')
.pipe(sass({ style: ''expanded'' }))
.pipe(autoprefixer(''> 5%'', ''last 2 version'', ''ie 9''))
.pipe(minifycss())
.pipe(rename({suffix: ''.min''}))
.pipe(gulp.dest(paths.css))
// .pipe(gulp.dest(''./_site/static/css/''))
// .pipe(notify({ message: ''Styles task complete'' }));
});
// COPY CSS
gulp.task(''copycss'', function() {
return gulp.src(paths.css+''app.min.css'')
.pipe(gulp.dest(''./_site/static/css/''))
// .pipe(notify({ message: ''Copied Minified CSS to _site/static/css'' }));
});
// JEKYLL
// Start a `jekyll build` task
// From: http://stackoverflow.com/questions/21293999/use-jekyll-with-gulp
gulp.task(''jekyll-build'', function() {
require(''child_process'').spawn(''jekyll'', [''build'', ''--config=_config.dev.yml''], {stdio: ''inherit''});
});
// Start a `jekyll build --watch` task
gulp.task(''jekyll-watch'', function() {
require(''child_process'').spawn(''jekyll'', [''build'', ''--watch'', ''--config=_config.dev.yml''], {stdio: ''inherit''});
});
// BROWSER-SYNC
gulp.task(''browser-sync'', function() {
// reload when Jekyll-generated files change
browserSync.init([''./_site/static/**/*.css'', ''./_site/**/*.html''], {
server: {
baseDir: ''./_site/''
}
});
});
// WATCH
gulp.task(''watch'', function() {
// TEST: [Only] Run `jekyll build` when I update (the version in) settings.yml
// gulp.watch(''./_config.yml'', [''jekyll'']);
// Run Sass when I update SCSS files
gulp.watch(paths.scss+''**/*.scss'', [''sass'', ''copycss'']);
// gulp.watch(paths.js+''**/*.js'', [''scripts'']);
// gulp.watch(paths.img+''**/*'', [''images'']);
});
// DEFAULT task
gulp.task(''default'', [''jekyll-watch'', ''watch'',''browser-sync'']);
Cada vez que corro un gulp
acabo de obtener:
events.js:72
throw er; // Unhandled ''error'' event
^
Error: spawn ENOENT
at errnoException (child_process.js:998:11)
at Process.ChildProcess._handle.onexit (child_process.js:789:34)
El problema al que te enfrentas es que no estás manejando el error, por lo tanto, cuando Gulp encuentra un error, lo lanza, pero "nadie" se está encargando de él, lo que hace que Gulp se rompa.
Para seguir ejecutando tragos, debe definir sus manejadores de errores y hacer lo que quiera hacer con el error, por lo general, imprima en la carpeta lo que está sucediendo.
También debe identificar qué parte de su código está "lanzando" el error, en su caso, es causado por los "observadores": un observador escucha eventos adicionales o agrega archivos al reloj. Entonces, un observador está lanzando el error.
¡Tienes que atraparlo!
Agregue un evento en el controlador después de la ejecución de los complementos, y pase este error a una función que lo pinte (o algo más), pero no rompa "el reloj" (John Snow estará orgulloso) y le permite identificar el error , arréglalo, a seguir viendo sin reiniciar trago manualmente.
PD: ¡No te olvides de definir "la función catcher"!
Tu código podría ser algo como esto:
var gulp = require(''gulp'');
var sass = require(''gulp-ruby-sass'');
var autoprefixer = require(''gulp-autoprefixer'');
var browserSync = require(''browser-sync'');
var rename = require(''gulp-rename'');
var concat = require(''gulp-concat'');
var minifycss = require(''gulp-minify-css'');
var uglify = require(''gulp-uglify'');
var clean = require(''gulp-clean'');
var notify = require(''gulp-notify'');
var plumber = require(''gulp-plumber'');
// Handy file paths
paths = {
scss: "./static/scss/",
css: "./static/css/",
img: "./static/img/",
js: "./static/js/"
}
// SASS
gulp.task(''sass'', function() {
// Be specific in what file to process
return gulp.src(paths.scss+''app.scss'')
.pipe(sass({ style: ''expanded'' })).on(''error'', errorHandler)
.pipe(autoprefixer(''> 5%'', ''last 2 version'', ''ie 9''))
.pipe(minifycss())
.pipe(rename({suffix: ''.min''}))
.pipe(gulp.dest(paths.css))
// .pipe(gulp.dest(''./_site/static/css/''))
// .pipe(notify({ message: ''Styles task complete'' }));
});
// COPY CSS
gulp.task(''copycss'', function() {
return gulp.src(paths.css+''app.min.css'')
.pipe(gulp.dest(''./_site/static/css/''))
// .pipe(notify({ message: ''Copied Minified CSS to _site/static/css'' }));
});
// JEKYLL
// Start a `jekyll build` task
// From: http://.com/questions/21293999/use-jekyll-with-gulp
gulp.task(''jekyll-build'', function() {
require(''child_process'').spawn(''jekyll'', [''build'', ''--config=_config.dev.yml''], {stdio: ''inherit''});
});
// Start a `jekyll build --watch` task
gulp.task(''jekyll-watch'', function() {
require(''child_process'').spawn(''jekyll'', [''build'', ''--watch'', ''--config=_config.dev.yml''], {stdio: ''inherit''});
});
// BROWSER-SYNC
gulp.task(''browser-sync'', function() {
// reload when Jekyll-generated files change
browserSync.init([''./_site/static/**/*.css'', ''./_site/**/*.html''], {
server: {
baseDir: ''./_site/''
}
});
});
// WATCH
gulp.task(''watch'', function() {
// TEST: [Only] Run `jekyll build` when I update (the version in) settings.yml
// gulp.watch(''./_config.yml'', [''jekyll'']);
// Run Sass when I update SCSS files
gulp.watch(paths.scss+''**/*.scss'', [''sass'', ''copycss'']);
// gulp.watch(paths.js+''**/*.js'', [''scripts'']);
// gulp.watch(paths.img+''**/*'', [''images'']);
});
// DEFAULT task
gulp.task(''default'', [''jekyll-watch'', ''watch'',''browser-sync'']);
// Handle the error
function errorHandler (error) {
console.log(error.toString());
this.emit(''end'');
}
Tenga en cuenta la definición del controlador de errores al final y la adición de .on (''error'', errorHandler) en su tarea sass.