当无效的财产名称时,手表停止
当出现错误信息时手表停止。
stream.js:94 throw er; // Unhandled stream error in pipe. ^ source string:51: error: invalid property name
我如何保持观看状态,只是告诉我错误在哪里。
咕噜可以处理错误,不需要停下来,
styleSheet.scss:41: error: invalid property name
否则,我需要在错误发生时在命令行中input“gulp”。
这个答案已经被附上,以反映最近对Gulp的改变。 我保留了最初的答复,与OP的问题相关。 如果您使用的是Gulp 2.x,请跳到第二部分
原始答复,Gulp 1.x
您可以通过将errLogToConsole: true
作为选项传递给sass()
方法来更改此默认行为。
你的任务可能看起来像这样,现在:
gulp.task('sass', function () { gulp.src('./*.scss') .pipe(sass()) .pipe(gulp.dest('./')); });
更改.pipe(sass())
行以包含errLogToConsole: true
选项:
.pipe(sass({errLogToConsole: true}))
这是错误日志logging的任务应该如下所示:
gulp.task('sass', function () { gulp.src('./*.scss') .pipe(sass({errLogToConsole: true})) .pipe(gulp.dest('./')); });
错误输出现在将内联,如下所示:
[gulp] [gulp-sass] source string:1: error: invalid top-level expression
您可以在nmpjs.org上阅读更多关于gulp gulp-sass
选项和configuration的信息
Gulp 2.x
在Gulp 2.x errLogToConsole
可能不再使用。 幸运的是, gulp-sass
有一个处理错误的方法。 on('error', sass.logError)
:
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('./css')); });
如果您需要更细粒度的控制,请随时提供callback函数:
gulp.task('sass', function () { gulp.src('./sass/**/*.scss') .pipe(sass() .on('error', function (err) { sass.logError(err); this.emit('end'); }) ) .pipe(gulp.dest('./css')); });
如果您需要更多关于stream程控制的信息,这是一个很好的线索: https : //github.com/gulpjs/gulp/issues/259#issuecomment-55098512
其实上面的漫游者不适合我(我使用gulp-sass 3.XX)。 什么工作:
gulp.task('sass', function () { return gulp.src(config.scssPath + '/styles.scss') .pipe(sourcemaps.init()) .pipe(sass({ outputStyle: 'compressed' }) .on('error', sass.logError) ) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(config.cssPath)) });
在我使用“sass.logError(err)”的时候, 我经常收到错误,“this.emit('end');不是一个函数”。 现在,当我使用:
.pipe(sass({ outputStyle: 'compressed' }) .on('error', sass.logError) )
一切都像魅力一样工作
在errLogToConsole
“^ 2.0.0”中, errLogToConsole
选项将不再起作用。 相反, gulp-sass
有一个内置的错误日志loggingcallback,它使用gulp-util
。 另外,因为gulp在处理错误时遇到了一些问题,所以如果你使用watch
你将不得不调用this.emit('end')
https://github.com/gulpjs/gulp/issues/259#issuecomment -55098512
var sass = require('gulp-sass'); //dev sass(config.sassDev) .on('error', function(err) { sass.logError(err); this.emit('end'); //continue the process in dev }) ) //prod sass(config.sassProd).on('error', sass.logError)
一位负责Gulp 3用户的人:
上面我喜欢@dtotheftp解决scheme,关于gulp 2.x. 有趣的是,它不起作用的Gulp3,至less不在@ 3.9.1下:
.on('error', function(err){ sass.logError(err); this.emit('end'); //continue the process in dev })
得到我
TypeError: this.emit is not a function at Function.logError (/depot/myproject/node_modules/gulp-sass/index.js:181:8)
请注意,投诉不是来自他的this.emit()
,而是来自sass节点模块,因此来自上一行。
这适用于我:
.on('error', function(err){ gutil.log(err); this.emit('end'); })
我得到所有的错误²,手表永远不会结束;)(我也使用plumber()
后gulp.src()
,这可能会有所帮助)。
(是的,修正可能是非常不合逻辑的,因为sass.logError据说基于gutil …)
–
²还有一些未定义的macros,无论什么原因,在我的设置之前都没有声音。