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

该过程引发以下错误:


错误:命令失败:
/用户/罗伯特/站点/ 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运行它。我该如何解决?我的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());
});

最佳答案

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

关于macos - gulp-imagemin错误:optipng:无法执行二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36932066/

10-09 21:08