我在gulpfile中调用resize:images任务时出现如下错误(见底部)…
events.js:160 throw er; // Unhandled 'error' event ^ Error: Error: write EOF at finish (C:\Users\brendan\Documents\Code\Web\TheOrm\WWW\v3\node_modules\gulp-gm\index.js:40:21) at gm.<anonymous> (C:\Users\brendan\Documents\Code\Web\TheOrm\WWW\v3\node_modules\async\lib\async.js:485:30) at emitMany (events.js:127:13) at gm.emit (events.js:201:7) at gm.<anonymous> (C:\Users\brendan\Documents\Code\Web\TheOrm\WWW\v3\node_modules\gm\lib\getters.js:70:16) at Socket.cb (C:\Users\brendan\Documents\Code\Web\TheOrm\WWW\v3\node_modules\gm\lib\command.js:322:16) at Socket.g (events.js:291:16) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at onwriteError (_stream_writable.js:340:10)
Imagemagick已安装,似乎可以在命令行中运行.即magick -help提供合理的输出,您可以保存内置的测试徽标图像.
我尝试了各种其他gulp库,包括gulp-responsive-images,它给出了一个空管道错误.
我在Linux的Linux子系统下尝试了这个并且它工作正常 – 似乎这是Windows唯一的问题.
在分配gulp-image-resize并运行测试套件后,我收到以下错误…
... [14:18:20] Starting 'image_resize:interlace_and_resize_imagemagick'... events.js:160 throw er; // Unhandled 'error' event ^ Error: write EPIPE at exports._errnoException (util.js:1026:11) at Socket._writeGeneric (net.js:710:26) at Socket._write (net.js:729:8) at doWrite (_stream_writable.js:328:12) at writeOrBuffer (_stream_writable.js:314:5) at Socket.Writable.write (_stream_writable.js:241:11) at Socket.write (net.js:656:40) at gm._spawn (C:\Users\brendan\Documents\Code\OpenSource\gulp-image-resize\node_modules\gm\lib\command.js:194:18) at gm._exec (C:\Users\brendan\Documents\Code\OpenSource\gulp-image-resize\node_modules\gm\lib\command.js:167:17) at gm.proto.(anonymous function) [as size] (C:\Users\brendan\Documents\Code\OpenSource\gulp-image-resize\node_modules\gm\lib\getters.js:68:12)
不幸的是,回购已经禁用了错误报告 – 有谁知道如何解决这个问题?
这是我的gulpfile.js …
let gulp = require('gulp'); let imageResize = require('gulp-image-resize'); let path = require('path'); let rename = require('gulp-rename'); let debug = require('gulp-debug'); let INPUT_DIR = './NO_UPLOAD/img_src'; let OUTPUT_DIR = './NO_UPLOAD/img_tmp'; gulp.task('resize:images',function() { relFns = [ 'logo.png','image.png',].map((f) => path.join(INPUT_DIR,f)); return gulp.src(relFns,{ base: INPUT_DIR }) .pipe(debug({ title: 'resized' })) .pipe(imageResize({ width: 100 })) .pipe(rename((path) => { path.basename += '.sml' })) .pipe(gulp.dest(OUTPUT_DIR)); });
解决方法
有很多问题……
>确保安装了Graphicsmagick(可能没有必要但安装没有任何危害)
>确保gm和magick都在你的道路上
>在参考this post的评论后,我发现重新启动计算机修复了这个问题. (因为打开一个新的控制台通常有效,我对重启感到惊讶.)>最后确保不要从Visual Studio Code实例打开的控制台运行. VSCode是一个32位应用程序,并启动一个32位控制台,不运行64位版本的Imagemagick.而是从资源管理器启动控制台.