gulp-imagemin错误:optipng:无法执行二进制文件

时间:2016-04-29 07:22:19

标签: macos gulp

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

该过程会抛出以下错误:

  

错误:命令失败:   /用户/ robbert /站点/ wordpress_cyklo / node_modules /咽-imagemin / node_modules / imagemin / node_modules / imagemin-使用OptiPNG / node_modules /使用OptiPNG滨/供应商/使用OptiPNG   -strip all -clobber -force -fix -o 2 -out / var / folders / kj / wydtr_t92hqgymv2d2v43pjw0000gr / T / 9ab534f4-267f-46cb-b99f-372028e6ed5b   的/ var /文件夹/ KJ / wydtr_t92hqgymv2d2v43pjw0000gr / T / eabb0414-f9db-4b6f-8242-4c8d25004e1d   /用户/ robbert /站点/ wordpress_cyklo / node_modules /咽-imagemin / node_modules / imagemin / node_modules / imagemin-使用OptiPNG / node_modules /使用OptiPNG滨/供应商/使用OptiPNG:   /用户/ robbert /站点/ wordpress_cyklo / node_modules /咽-imagemin / node_modules / imagemin / node_modules / imagemin-使用OptiPNG / node_modules /使用OptiPNG滨/供应商/使用OptiPNG:   无法执行二进制文件

每当我在文件夹上运行Gulp时,我都会得到同样的错误,除非我通过我的Vagrant VM运行它。我该如何解决?我的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());
});

1 个答案:

答案 0 :(得分:13)

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