2016-04-29 21 views
7

Sto eseguendo un progetto con Gulp installato sulla mia macchina. Durante l'esecuzione di Gulp Watch, il mio gulp-imagemin interrompe il processo se aggiungo una nuova immagine alla cartella. Ho tutte le autorizzazioni impostate correttamente (controllate più volte) su quella cartella, e l'immagine ha anche le autorizzazioni corrette.errore gulp-imagemin: optipng: impossibile eseguire il file binario

Il processo genera il seguente errore:

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

Ogni volta che corro Gulp sulla cartella, ottengo lo stesso errore, a meno che l'eseguo attraverso la mia Vagrant VM. Come posso risolvere questo? La mia VM è molto più lenta, quindi vorrei davvero essere in grado di eseguire Gulp sul mio sistema operativo principale.

Edit: Ecco il fiato per le immagini:

// ### 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

è possibile pubblicare il tuo gulpfile o almeno la chiamata orologio esatto? thx – rick

+0

@rick Non sono così familiare con il gulp, ma penso di averlo aggiunto alla domanda ora. – Rvervuurt

+0

sembra che fosse un problema noto su mac osx https://github.com/imagemin/optipng-bin/issues/37 non so se questo può aiutarti – rick

risposta

7

gulp-imagemin si basa su optipng per ottimizzare le immagini PNG. optipng è un programma nativo scritto in C, non JavaScript. Ciò significa che quando si installa npm install gulp-imagemin l'eseguibile appropriato di optipng per l'architettura del sistema è installato.

Se si esegue npm install gulp-imagemin su un sistema (per esempio Linux) e quindi copiare l'intero progetto compresa la cartella node_modules ad un altro sistema (per esempio MacOS X), l'eseguibile optipng sarà ancora quello per Linux. MacOS X non può eseguire file eseguibili di Linux.

Lo stesso problema potrebbe verificarsi anche se non si copia esplicitamente il progetto, ma si incorre accidentalmente la cartella node_modules nel repository.

La soluzione migliore è quella di eliminare l'intera cartella node_modules e npm install da zero:

rm -rf node_modules 
npm install 
Problemi correlati