2016-04-29 7 views
7

Ich habe ein Projekt mit Gulp auf meinem Rechner installiert. Wenn ich Gulp Watch starte, stürzt mein gulp-imagemin ab, wenn ich dem Ordner ein neues Image hinzufüge. Ich habe alle Berechtigungen richtig gesetzt (mehrfach markiert) für diesen Ordner, und das Bild hat auch die richtigen Berechtigungen.gulp-imagemin Fehler: optipng: binäre Datei kann nicht ausgeführt werden

Der Prozess führt den folgenden Fehler:

Error: Command failed: /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: cannot execute binary file

Immer, wenn ich Gulp auf den Ordner laufen, bekomme ich den gleichen Fehler, außer wenn ich es durch meine Vagrant VM laufen. Wie behebe ich das? Meine VM ist viel langsamer, also würde ich wirklich in der Lage sein, Gulp auf meinem Hauptbetriebssystem laufen zu lassen.

Edit: Hier ist der Zug für Bilder:

// ### 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()); 
}); 
+0

können Sie Ihre gulpfile veröffentlichen oder zumindest die genaue Uhr Anruf? thx – rick

+0

@rick Ich bin nicht so vertraut mit Schluck, aber ich denke, ich habe es jetzt zu der Frage hinzugefügt. – Rvervuurt

+0

es scheint, es war ein bekanntes Problem auf Mac OSX https://github.com/imagemin/optipng-bin/issues/37 weiß nicht, ob dies Ihnen helfen kann – rick

Antwort

7

gulp-imagemin auf optipng beruht PNG-Bilder zu optimieren. optipng ist ein natives Programm geschrieben in C, nicht JavaScript. Das heißt, wenn Sie npm install gulp-imagemin die entsprechende ausführbare Datei von optipng für Ihre Systemarchitektur installiert ist.

Wenn Sie npm install gulp-imagemin auf einem System laufen (zum Beispiel Linux) und dann das gesamte Projekt einschließlich den node_modules Ordner auf ein anderes System kopieren (z MacOS X), die optipng ausführbare Datei wird noch die ein für Linux sein. MacOS X kann keine ausführbaren Linux-Dateien ausführen.

Das gleiche Problem kann auch dann auftreten, wenn Sie das Projekt nicht explizit kopieren, sondern versehentlich den Ordner node_modules in Ihr Repository übertragen.

Ihre beste Möglichkeit ist, den gesamten node_modules Ordner und npm install von Grund auf neu zu löschen:

rm -rf node_modules 
npm install 
Verwandte Themen