【问题标题】:gulp-imagemin error: optipng: cannot execute binary filegulp-imagemin 错误:optipng:无法执行二进制文件
【发布时间】:2026-02-11 03:15:01
【问题描述】:

我正在运行一个在我的机器上安装了 Gulp 的项目。运行 Gulp Watch 时,如果我向文件夹中添加新图像,我的 gulp-imagemin 会使进程崩溃。我在该文件夹上正确设置了所有权限(多次检查),并且图像也具有正确的权限。

进程抛出如下错误:

错误:命令失败: /Users/robbert/Sites/wordpress_cyklo/node_modules/gulp-imagemin/node_modules/imagemin/node_modules/imagemin-optipng/node_modules/optipng-bin/vendor/optipng -strip all -clobber -force -fix -o 2 -out /var/folders/kj/wydtr_t92hqgymv2d2v43pjw0000gr/T/9ab534f4-267f-46cb-b99f-372028e6ed5b /var/folders/kj/wydtr_t92hqgymv2d2v43pjw0000gr/T/eabb0414-f9db-4b6f-8242-4c8d25004e1d /Users/robbert/Sites/wordpress_cyklo/node_modules/gulp-imagemin/node_modules/imagemin/node_modules/imagemin-optipng/node_modules/optipng-bin/vendor/optipng: /Users/robbert/Sites/wordpress_cyklo/node_modules/gulp-imagemin/node_modules/imagemin/node_modules/imagemin-optipng/node_modules/optipng-bin/vendor/optipng: 无法执行二进制文件

每当我在文件夹上运行 Gulp 时,我都会收到相同的错误,除非我通过我的 Vagrant VM 运行它。我该如何解决?我的虚拟机要慢很多,所以我真的希望能够在我的主操作系统上运行 Gulp。

编辑:这是图片的一大堆:

// ### Images
// `gulp images` - Run lossless compression on all the images.
gulp.task('images', function() {
  return gulp.src(globs.images)
    .pipe(imagemin({
      progressive: true,
      interlaced: true,
      svgoPlugins: [{removeUnknownsAndDefaults: false}, {cleanupIDs: false}]
    }))
    .pipe(gulp.dest(path.dist + 'images'))
    .pipe(browserSync.stream());
});

【问题讨论】:

  • 你能发布你的 gulpfile 或者至少是确切的 watch call 吗?谢谢
  • @rick 我对 gulp 不太熟悉,但我想我现在已经将它添加到问题中了。
  • 这似乎是mac osx上的一个已知问题github.com/imagemin/optipng-bin/issues/37不知道这是否可以帮助你

标签: macos gulp


【解决方案1】:

gulp-imagemin 依赖 optipng 来优化 PNG 图像。 optipng 是用 C 而不是 JavaScript 编写的本机程序。这意味着当您npm install gulp-imagemin 时,会安装适用于您的系统架构的optipng 的相应可执行文件。

如果您在一个系统(例如 Linux)上运行 npm install gulp-imagemin,然后将包括 node_modules 文件夹在内的整个项目复制到另一个系统(例如 MacOS X),optipng 可执行文件仍将是 Linux 的可执行文件。 MacOS X 无法运行 Linux 可执行文件。

即使您没有明确复制项目,但不小心将node_modules 文件夹提交到您的存储库中,也可能会出现同样的问题。

您最好的选择是从头开始删除整个node_modules 文件夹和npm install

rm -rf node_modules
npm install

【讨论】: