【问题标题】:Error EOF when trying to resize images using Gulp on Windows尝试在 Windows 上使用 Gulp 调整图像大小时出现错误 EOF
【发布时间】:2016-12-10 01:41:12
【问题描述】:

在我的 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,它会给出空管道错误。

我在适用于 Windows 的 Linux 子系统下尝试过这个,它工作正常 - 似乎这是一个 Windows 唯一的问题。

在 fork 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)

不幸的是,repo 禁用了错误报告 - 有人知道如何解决这个问题吗?

这是我的 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));
});

【问题讨论】:

    标签: windows npm gulp imagemagick image-manipulation


    【解决方案1】:

    有很多问题...

    1. 确保也安装了Graphicsmagick(可能没有必要,但安装不会造成任何伤害)
    2. 确保gmmagick 都在您的路径中
    3. 在参考this post 的评论后,我发现重新启动计算机可以解决问题。 (我对重新启动感到惊讶,因为打开新控制台通常可以正常工作。)
    4. 最后确保您没有从从 Visual Studio Code 实例打开的控制台运行。 VSCode 是一个 32 位应用程序,它启动一个不运行 64 位版本的 Imagemagick 的 32 位控制台。而是从 Explorer 启动控制台。

    【讨论】:

    • 好点!但它似乎可以访问convert.exe,它也是 Windows NT 文件系统转换器的一部分。在C:\Windows\system32之前设置magick路径如:PATH c:\Program Files (x86)\ImageMagick-6.7.6-Q8;%PATH%
    • 我从 VSCode 运行 gulp!从 Powershell 执行解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多