2016-03-02 28 views
0

我得到“处理‘错误’事件”,而运行一饮而尽:咕嘟咕嘟未处理的“错误”事件

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)); 
}; 

我应该做什么以及如何调试它发生的原因?

回答

0

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

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

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

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