【问题标题】:Gulp Unhandled 'error' eventGulp 未处理的“错误”事件
【发布时间】:2016-03-02 17:41:25
【问题描述】:

我在运行 gulp 时收到“未处理的‘错误’事件”:

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn gm ENOENT
    at exports._errnoException (util.js:870:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:437:9)
    at process._tickCallback (node.js:351:17)

我发现错误是由我的 gulpfile.js 中的那个函数引起的:

var taskResizeSprite2x = function() {
    return gulp.src(config.paths.source.sprite + '/*@2x.png')
        .pipe(changed(config.paths.source.sprite + '/*@2x.png'))
        .pipe(gm(function(gmfile) {
            gmfile.size(function(err, value) {
                if(value && (value.width % 2 !== 0 || value.height % 2 !== 0)) {
                    var src = gmfile.name().source;
                    modules.livereload.notify('Retina images must have even size!<br>' + src);

                    throw Error('Retina images must have even size! ' + src);
                }
            })
            return gmfile.resize('50%', '50%');
        }))
        .pipe(rename(function(filepath) {
            filepath.basename = filepath.basename.replace(/@\dx/, '');
        }))
        .pipe(gulp.dest(config.paths.source.sprite));
};

我应该做什么以及如何调试它为什么会发生?

【问题讨论】:

    标签: gulp frontend


    【解决方案1】:

    您需要一个记录实际错误的函数。

    function handleError(err) {
      console.log(err.toString());
      this.emit('end');
    }
    

    然后在 gulp 函数抛出错误时调用它。

    .pipe(something({
      Paths: 'somepath'
    }))
    .on('error', handleError)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多